redis配置2
上一篇已经实现了多节点的Master-Slave,其实也可以称作为集群,但是是以命令的方式实现的,不怎么方便,现在以配置的方式,实现Redis集群
按照上文中的方法 配置几个redis终端(不在表述)
修改配置文件,这里的配置除了端口和守护进程都是注释掉的,需要吧注释#去除
#启动守护进程
demonize yes
#端口号,与文件夹名保持一致
port9001
#启用redis集群
cluster-enabled yes
#还不清楚这是干嘛用的
cluster-config-file nodes.conf #这个前面会有端口号,我都给去掉了暂时没有影响
#超时时间
cluster-node-timeout5000 # 这个没改还是5000,看似没什么影响
#开始append only模式,redis 将每一次写操作请求都追加到appendonly.aof 文件中,redis重新启动时,会从该文件恢复出之前的状态
appendonly yes
完成这些后启动实例看看是否能成功
完成上述操作进到 redis目录下的src文件夹运行redis-trib.rb文件,创建集群,让这三个实例间相互通信
./redis-trib.rb create --replicas0127.0.0.1:9001127.0.0.1:9002127.0.0.1:9003
注意这里可能报错
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in`require': cannot load such file -- redis (LoadError)from/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in`require'from./redis-trib.rb:25:in`'
也可能是其他错误,但是总结了一下就是ruby 支持问题
需要安装ruby支持
yum install ruby //ruby安装
yum install rubygems //rubygems组件
Gem install redis //redis和ruby的接口
最后一个是看ruby 是不是安装成功的其余的干嘛的可以去百度一下,讲解的比我详细多了
至此算是完成了ruby 安装,但是发现还是无法建立通信
试了很多最后发下redis 所有服务需要重启才能完成
重启,然后建立通信,成功
使用redis-trib.rb进行集群检查
./redis-trib.rb check127.0.0.1:9001 //需要在redis src下
在强制关机后redis集群会报错
[ERR] Node 127.0.0.1:9002 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
删除.aof 和nodes.conf 文件重启电脑 redis-server redis.conf 再次调用上面的集群重连
集群启动不能再用redis-cli -p 9001 启动
会报错
(error) MOVED 5798 127.0.0.1:9002
需要用 redis-cli -c -h 127.0.0.1 -p 9001
如何在不用【config set】命令的情况下,将Redis持久化由RDB切换到AOF
先在从机配置AOF,把这个AOF COPY到主机然后在配置主机AOF重启,不然会丢失数据
RDB 在恢复大数据集时的速度比 AOF 的恢复速度要快。
RDB在断电时容易丢失数据
使用 AOF 持久化会让 Redis 变得非常耐久(much more durable)
AOF可以设置不同的 fsync 策略 默认是1秒一次,就算发生故障停机,也最多只会丢失一秒钟的数据
至此redis 集群完成 欠缺redis 集群增加删除节点后面做过了补充上,下面一段时间将关注redis方法