谈一谈 redis 集群

2017-01-06 10:05:29来源:oschina作者:小D同学人点击

第七城市

前言:


好几天没写东西了,今天写一些吧。随便聊一聊redis的集群.


redis 由于性能卓越,在众多互联网企业广泛应用。Redis在3.0版本前只支持单实例模式,虽然现在的服务器内存可以到100GB、200GB的规模,新浪微博就曾经用Redis存储了超过1TB的数据,但是单实例模式限制了Redis没法满足业务的需求. 为了达到新的业务要求,开始集群吧。


一: ruby方式


首先说一下 ruby集群的方式,ruby传说是made in Japan:


思路应该是这样首先下载一个ruby,然后安装



安装时 add ruby executables to your path 要选中, 我把第三个也选中,动态链接ruby文件.


接下来 可以用ruby 命令工具打开命令行模式,在命令行下gem source -l 可以看到获取资源的域名,如



默认的是https://rubygems.org/,这里通过


删除被墙的源:gemsources-rhttps://rubygems.org/,添加gemsources-ahttp://rubygems.org/


也有人用这个源https://ruby.taobao.org.


现在安装redis工具,由于这里还是用国外源,先翻墙,然后命令行下:


  >gem install redis -v 3.0.1


   


   接下来E:/Ruby22/lib/ruby/gems/2.2.0/gems/redis-3.0.1/lib/redis/redis-trib.rbcreate --replicas 1 127.0.0.1:7001 127.0.0.1:7002


1 即自动分配 Slave , 如果想手动指定 Slave , 将该值变为 0 即可


另外集群的 redis.conf 要设置


port 7001 cluster-enabled yes cluster-config-file nodes-7001.conf cluster-node-timeout 5000 appendonly yes


port 此节点的端口 ,cluster-config-file 生成的note文件 需要每个不同定义.


启动 master,slave ,后查看集成效果。


这种集成方式我在 gem更新 redis时成功更新,但是找不到redis-trib.rb这个文件,下了3个版本的redis还是没有,沮丧而未成。


二: 哨岗方式


这个方式不需要其它外部资源支持,在redis 根目录下建2个逻辑redis server .



7001 7002 是逻辑server 目录, 7001为master ,7002为slave


以7002为例进行讲解:


建2个文件


sentinel.conf 为哨岗文件,加入 port 26379


sentinel monitor devmaster 127.0.0.1 7001 2 sentinel down-after-milliseconds devmaster 3000


sentinel auth-pass devmaster test


protected-mode no


其中 port 为synchronized 端口 ,sentinel monitor devmaster定义向哪个master同步.


redis.conf 加入


slaveof 127.0.0.1 7001


配置OK,然后命令行里启动server.



这部分可以做成批处理.


开始测试:



server7002 成功读取到server7001数据。


看一下server7001 和 server7002的log



log in server7001



log in server 7002

后记: redis同步的方式还有很多,有的用C语言同步的,还有用Java程序同步的,在使用时要根据场景选择适合的同步机制。

第七城市

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台