Redis
1.简介
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,edis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现master-slave(主从)同步。redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。
2.环境
主Redis:192.168.39.* 6379
从redis:192.168.39.* 6380
下载: redis-2.2.8.tar.gz 网上就有的,我用的这个版本
3.安装(两台都执行,解压&&安装)
#tar -zxvf redis-2.2.8.tar.gz
#cd redis-2.2.8
#make
4.修改配置文件
1、将主从redis配置文件redis.conf中的aemonize no 改为 yes
2、修改从redis配置文件redis.conf中的port 6379 改为 6380,添加slaveof 192.168.39.* 6379
现在可以说是ok了。说说配置文件。
5.配置文件说明:
daemonize:如需要在后台运行,把该项的值改为yes
pdifile:把pid文件放在/var/run/redis.pid,可以配置到其他地址
bind:指定redis只接收来自该IP的请求,如果不设置,那么将处理所有请求,在生产环节中最好设置该项
port:监听端口,默认为6379
slaveof:主redis,要跟端口的
更多配置信息参考:http://blog.csdn.net/wangqingqi20005/article/details/50607028
常用命令说明:http://blog.csdn.net/rockstar541/article/details/30245493
进去可以输入ctrl+f 查找你想要的配置文件选项说明。
6.启动主从服务
[[email protected] redis-2.2.8]# src/redis-server /root/redis-2.2.8/redis.conf
说明:src/redis-server 这是redis
/root/redis-2.2.8/redis.conf 这是redis的安装配置文件
7.测试数据同步
1.主redis:
[[email protected] redis-2.2.8]# src/redis-cli -p 6379
redis> set 1+3= 4
OK
redis> get 1+3=
"4"
redis>
2.从redis:
[[email protected] redis-2.2.8]# src/redis-cli -p 6380
redis> get 1+3=
"4"
redis>
src/redis-cli常用命令参考:http://www.cnblogs.com/silent2012/p/5368925.html
8.关闭和开启redis(主从的区别就是 -p 后面的端口不一样)
#src/redis-cli -p 6380 shutdown
#src/redis-server /root/redis-2.2.8/redis.conf
###9.默认读写分离:
测试,在从服务上操作写入:
自己理解读写分离:应该是从服务只能读,不能写,只有主能写。
例如(下面我在从服务器上写入报错):
10.下来是主从切换(当主redis宕机时......):
1.模拟:先关闭主redis。
[[email protected] redis-2.2.8]# src/redis-cli -p 6379 shutdown
[[email protected] redis-2.2.8]# src/redis-cli -p 6379
Could not connect to Redis at 127.0.0.1:6379: Connection refused
2.下来将从服务器设置为主:
#src/redis-cli -p 6380 slaveof NO ONE
3.验证(从服务器):
[[email protected] redis-2.2.8]# src/redis-cli -p 6380
redis> set gg hh
OK
redis> get gg
"hh"
redis>
有ok和get有结果就是正常的。
4.如果主redis好了,要切换回去的(注意:从服务器在主服务器宕机的这段时间内的数据不会在主redis服务器回来之后,同步到主服务器上)。
下来是启动主redis,你可以验证一下,数据是否同步。我刚才在从服务器上建立了一个键值 gg--hh。下来启动主服务器看看是否同步?
[[email protected] redis-2.2.8]# src/redis-server /root/redis-2.2.8/redis.conf
[[email protected] redis-2.2.8]# src/redis-cli -p 6379
redis> get gg
"ab"
redis>
[[email protected] redis-2.2.8]# cat dump.rdb
注意上面主服务器的值不是刚才在从上面创建的hh,之所以是ab,因为我之前创建过这个键值对。
其实你仔细观察这个文件都是刚才创建的键值对,我那个从服务器文件gg的值为什么没有刷新?
是我没执行save,这个命令可以强制刷新到磁盘上。
6.结果:没有同步,建议这个结果看完还是讲主redis关闭,下来还要将从服务器上的redis数据导入过来(主要就是主服务器宕机的这段时间数据)。
11.下来是这段时间的数据同步。首先在从服务器上执行写数据(保存数据)
然后开启主redis。
[[email protected] redis-2.2.8]# src/redis-server /root/redis-2.2.8/redis.conf
可以看到刚才写的。
在从redis执行(让给主redis):
#src/redis-cli -p 6380 slaveof 192.168.39.* 63
建议把日志设置好,redis的日志还是很好查看的。
loglevel notice#日志等级
logfile "/usr/redis/log/redis.log"#日志保存路径
12.接下来我们看看/usr/local/redis/bin目录下的几个文件时什么
redis-benchmark:redis性能测试工具
redis-check-aof:检查aof日志的工具
redis-check-dump:检查rdb日志的工具
redis-cli:连接用的客户端
redis-server:redis服务进程
*Redis学习地址:http://www.runoob.com/redis/redis-conf.html