Redis单机安装与使用



1、下载最新的redis版本http://download.redis.io/releases/redis-3.2.9.tar.gzFUe思考者日记网-束洋洋个人博客

2、上传到linux,解压:tar xzf redis-3.2.3.tar.gzFUe思考者日记网-束洋洋个人博客

3、查看本地是否安装gcc,gcc -vFUe思考者日记网-束洋洋个人博客

4、cd redis-3.2.9FUe思考者日记网-束洋洋个人博客

5、安装:makeFUe思考者日记网-束洋洋个人博客

等待一会,安装成功FUe思考者日记网-束洋洋个人博客

1a8e76de4e59c8031da67da24911e55f.jpgFUe思考者日记网-束洋洋个人博客

6、进入src目录cd src,看到有很多目录FUe思考者日记网-束洋洋个人博客

addf3b71a40e70d2fac292c8678dbe87.jpgFUe思考者日记网-束洋洋个人博客

其中redis-server是用来启动服务用的,redis-cli是用来启动客户端用的,其他的还不清楚,大家可以查一下。FUe思考者日记网-束洋洋个人博客

7、我们可以启动一下,在该目录下输入./redis-server 命令,就会看到如下图所示。FUe思考者日记网-束洋洋个人博客

21c37fb051a763c49763d33d3aacb387.jpgFUe思考者日记网-束洋洋个人博客

这说明我们的redis安装成功了。你也可以使用./redis.cli–p 6379 进入客户端,进行测试。FUe思考者日记网-束洋洋个人博客

8、将redis做成服务以便后台运行FUe思考者日记网-束洋洋个人博客

cd ..FUe思考者日记网-束洋洋个人博客

llFUe思考者日记网-束洋洋个人博客

发现有个utils文件夹FUe思考者日记网-束洋洋个人博客

首先将utils/redis_init_script文件复制到一个/etc/init.d下(注册服务必须是这个目录),同时更名为redis。执行命令FUe思考者日记网-束洋洋个人博客

cp /home/shuyangyang/Downloads/redis-3.2.9/utils/redis_init_script /etc/rc.d/init.d/redisFUe思考者日记网-束洋洋个人博客

 FUe思考者日记网-束洋洋个人博客

编辑拷贝过来的redis文件FUe思考者日记网-束洋洋个人博客

vi redis,红框标注的,第二行是新增,下面的在$EXEC $CONF后面增加 &,不然启动不会以后台运行FUe思考者日记网-束洋洋个人博客

e59de06e598a7b644a78b6101ffb2048.jpgFUe思考者日记网-束洋洋个人博客

如果/usr/local/redis/bin中没有redis-server和redis-cli文件的话,我们要在我们的安装目录下复制一个过来。否则服务启动时找不到redis-server。FUe思考者日记网-束洋洋个人博客

 FUe思考者日记网-束洋洋个人博客

如果报错找不到.pid,则去查看/var/run目录FUe思考者日记网-束洋洋个人博客

将/etc/rc.d/init.d/redis 文件中的redis_${REDISPORT}.pid修改为redis.pidFUe思考者日记网-束洋洋个人博客

重启即可生效。FUe思考者日记网-束洋洋个人博客

 FUe思考者日记网-束洋洋个人博客

如果虚拟机中,外网无法访问:FUe思考者日记网-束洋洋个人博客

1、关闭防火墙FUe思考者日记网-束洋洋个人博客

2、redis.confi文件中修改127.0.0.1为真实IP地址FUe思考者日记网-束洋洋个人博客

bf0d4ba2bf9442a3505c8f1fbd23d522.jpgFUe思考者日记网-束洋洋个人博客

这里即本地和固定ip都可访问。如果只设置其中一个,那么只能其中一个可以访问。FUe思考者日记网-束洋洋个人博客

 FUe思考者日记网-束洋洋个人博客

一般开始的时候没有任何数据实例,/var/run目录下是没有redis*.pid的FUe思考者日记网-束洋洋个人博客

我们可以在服务器客户端测试:FUe思考者日记网-束洋洋个人博客

redis-cli进入redis客户端:FUe思考者日记网-束洋洋个人博客

set key 我们给个testFUe思考者日记网-束洋洋个人博客

下面取值FUe思考者日记网-束洋洋个人博客

f78d78b8dc09f9b4d09dadf8adeb4421.jpgFUe思考者日记网-束洋洋个人博客

 测试完之后就会生成.pid文件。FUe思考者日记网-束洋洋个人博客

java客户端测试FUe思考者日记网-束洋洋个人博客

首先创建个Maven项目,加入pom配置FUe思考者日记网-束洋洋个人博客

<!-- redis客户端:jedis -->
<dependency>
	<groupId>redis.clients</groupId>
	<artifactId>jedis</artifactId>
	<version>2.9.0</version>
</dependency>

这里包含了连接池和客户端jarFUe思考者日记网-束洋洋个人博客

编写Junit测试代码FUe思考者日记网-束洋洋个人博客

FUe思考者日记网-束洋洋个人博客

输出FUe思考者日记网-束洋洋个人博客

# Server
redis_version:3.2.9
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:98a25d8c69d6b488
redis_mode:standalone
os:Linux 2.6.32-358.el6.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:4.4.7
process_id:2729
run_id:d069d624d81c71d6150686c009855e017e84362b
tcp_port:6379
uptime_in_seconds:2384
uptime_in_days:0
hz:10
lru_clock:5285573
executable:/usr/local/bin/redis-server
config_file:/etc/redis/6379.conf

# Clients
connected_clients:2
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0

# Memory
used_memory:842504
used_memory_human:822.76K
used_memory_rss:8060928
used_memory_rss_human:7.69M
used_memory_peak:885168
used_memory_peak_human:864.42K
total_system_memory:1960640512
total_system_memory_human:1.83G
used_memory_lua:37888
used_memory_lua_human:37.00K
maxmemory:0
maxmemory_human:0B
maxmemory_policy:noeviction
mem_fragmentation_ratio:9.57
mem_allocator:jemalloc-4.0.3

# Persistence
loading:0
rdb_changes_since_last_save:6
rdb_bgsave_in_progress:0
rdb_last_save_time:1498457486
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:0
rdb_current_bgsave_time_sec:-1
aof_enabled:0
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:-1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok

# Stats
total_connections_received:14
total_commands_processed:27
instantaneous_ops_per_sec:0
total_net_input_bytes:687
total_net_output_bytes:5983134
instantaneous_input_kbps:0.00
instantaneous_output_kbps:0.00
rejected_connections:0
sync_full:0
sync_partial_ok:0
sync_partial_err:0
expired_keys:0
evicted_keys:0
keyspace_hits:8
keyspace_misses:1
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:28554
migrate_cached_sockets:0

# Replication
role:master
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

# CPU
used_cpu_sys:4.40
used_cpu_user:2.00
used_cpu_sys_children:0.01
used_cpu_user_children:0.00

# Cluster
cluster_enabled:0

# Keyspace
db0:keys=2,expires=0,avg_ttl=0

 FUe思考者日记网-束洋洋个人博客

 FUe思考者日记网-束洋洋个人博客

 连接池测试FUe思考者日记网-束洋洋个人博客

package cn.com.shuyangyang.redis;

import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

public class JedisPoolTest {

	private static JedisPool jedisPool;

	/**
	 * initPoolConfig <br>
	 * ------------------------------<br>
	 * 
	 * @return
	 */
	private static JedisPoolConfig initPoolConfig() {
		JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
		// 控制一个pool最多有多少个可用的的jedis实例
		jedisPoolConfig.setMaxTotal(1000);
		// 最大能够保持空闲状态的对象数
		jedisPoolConfig.setMaxIdle(300);
		// 超时时间
		jedisPoolConfig.setMaxWaitMillis(10000);
		// 在borrow一个jedis实例时,是否提前进行alidate操作;如果为true,则得到的jedis实例均是可用的;
		jedisPoolConfig.setTestOnBorrow(true);
		// 在还会给pool时,是否提前进行validate操作
		jedisPoolConfig.setTestOnReturn(true);
		return jedisPoolConfig;
	}

	/**
	 * 初始化jedis连接池 <br>
	 * ------------------------------<br>
	 */
	@BeforeClass
	public static void before() {
		JedisPoolConfig jedisPoolConfig = initPoolConfig();
		// 参数信息
		String host = "192.168.1.110";
		int port = 6379;
		int timeout = 6000;
		// 构造连接池
		jedisPool = new JedisPool(jedisPoolConfig, host, port, timeout);
	}

	@Test
	public void testSet() {
		Jedis jedis = null;
		// 从池中获取一个jedis实例
		try {
			jedis = jedisPool.getResource();
			jedis.set("blog_pool", "shuyangyang.com.cn");
		} catch (Exception e) {
			// 销毁对象
			if (jedis != null) {
				jedis.close();
			}
			Assert.fail(e.getMessage());
		} finally {
			if (jedis != null) {
				jedis.close();
			}
		}
	}

	@Test
	public void testGet() {
		Jedis jedis = null;
		try {
			// 从池中获取一个jedis实例
			jedis = jedisPool.getResource();
			System.out.println(jedis.get("blog_pool"));
		} catch (Exception e) {
			// 销毁对象
			if (jedis != null) {
				jedis.close();
			}
			Assert.fail(e.getMessage());
		} finally {
			if (jedis != null) {
				jedis.close();
			}
		}
	}
}

 FUe思考者日记网-束洋洋个人博客

 

(转载本站文章请注明作者和出处 思考者日记网|束洋洋个人博客 ,请勿用于任何商业用途)

『访问 思考者日记网404页面 寻找遗失儿童』

告知
  •     本站90%以上文章均属原创,部分转载已加上原作者出处。 如需转载本站文章请您务必保留本站出处!
  •     打广告评论者请自重,请为广大网友提供一个健康干净的网络空间。
  • 感谢主机屋提供网站空间;
  • 感谢万网阿里云提供域名解析;
  • 感谢EmpireCMS提供CMS系统;
  • 感谢bootstrap展示本站前端页面;
  • 感谢Glyphicons Halflings提供字体;
  • 感谢大家一直以来对本站的喜爱,感谢大家!
近期文章 建议与反馈