十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
如何实现分布式缓存redis-cluster环境搭建及wishstack调用Jedis,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
成都创新互联公司是一家专业提供云州企业网站建设,专注与成都网站设计、成都做网站、H5场景定制、小程序制作等业务。10年已为云州众多企业、政府机构等服务。创新互联专业网站制作公司优惠进行中。
redis集群三种方式
1、Redis官方提供的集群解决方案-Redis-cluster (刚发布差不多一年)
2、 Twemproxy ( twitter贡献的) 使用时间比较长,比较成熟,但是有些功能不支持
3、豌豆尖针对Twemproxy 进行改良优化后的解决方案codis
更多分布式缓存方案级别选型请参考博文:http://my.oschina.net/tantexian/blog/685620
redis应用场景:任何需要用到缓存的地方,解决本地缓存数据量太小问题。分布式缓存能有效防止本地缓存失效数据库雪崩现象。 解决分布式应用中缓存不能共用(分布式session保存)。云计算中为客户提供缓存分布式缓存redis服务(青云、UnitedStack等厂商已经具有了)
接下来主要讲解如何搭建Redis-cluster集群环境及wishstack如何使用Jedis调用Redis集群:
mkdir cluster-test
cd cluster-test
mkdir 7000 7001 7002 7003 7004 7005
yum install gcc wget -y
wget http://download.redis.io/releases/redis-3.0.5.tar.gz
tar xzvf redis-3.0.5.tar.gz
cd redis-3.0.5
make(直接make报错则使用make MALLOC=libc)
yum install tcl -y
make test
make install
安装完毕redis-*常规操作命令脚本即被copy到linux bin下面,可以直接使用(当然也可以使用编译完的源码包./redis-3.0.5/src/下面的脚本)
将redis源码包的配置文件复制到7000/
cp redis-3.0.5/redis.conf 7000/
vi 7000/redis.conf
修改配置文件中的下面选项
port 7000
daemonize yes
cluster-enabled yes
cluster-config-file nodes-7000.conf
cluster-node-timeout 5000
appendonly yes
将修改好的7000/redis.conf文件复制到其他文件夹(修改redis.conf 端口port为对于的port)
cp 7000/redis.conf 7001/
cp 7000/redis.conf 7002/
cp 7000/redis.conf 7003/
cp 7000/redis.conf 7004/
cp 7000/redis.conf 7005/
注:7001文件夹下面的redis.conf将端口修改为7001,其他依次类推。
分别启动6个redis实例:
redis-server ./7000/redis.conf
redis-server ./7001/redis.conf
redis-server ./7002/redis.conf
redis-server ./7003/redis.conf
redis-server ./7004/redis.conf
redis-server ./7005/redis.conf
redis-server ./7000/redis.conf && redis-server ./7001/redis.conf && redis-server ./7002/redis.conf && redis-server ./7003/redis.conf && redis-server ./7004/redis.conf&& redis-server ./7005/redis.conf
使用ruby脚本redis-trib.rb执行redis的创建集群命令创建集群
#redis3.0.5源码包中的redis-trib.rb的create子命令构建集群
其中参数--replicas
则指定了Redis Cluster中的每个Master节点配备几个Slave节点
其中节点角色由顺序决定,先master之后是slave
使用redis-trib.rb脚本必须有ruby环境,及redis的ruby接口。
yum -y install ruby ruby-devel rubygems rpm-build
gem install redis(网速不行则使用淘宝的gem源:gem sources --add https://ruby.taobao.org/ --remove https://rubygems.org/)
创建redis集群:
./redis-3.0.5/src/redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
./redis-3.0.5/src/redis-trib.rb create --replicas 1 172.31.2.32:7000 172.31.2.32:7001 172.31.2.32:7002 172.31.2.32:7003 172.31.2.32:7004 172.31.2.32:7005
./redis-3.0.5/src/redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
这个命令在这里用于创建一个新的集群, 选项--replicas 1
表示我们希望为集群中的每个主节点创建一个从节点。
之后跟着的其他参数则是这个集群实例的地址列表,3个master3个slave
redis-trib 会打印出一份预想中的配置给你看, 如果你觉得没问题的话, 就可以输入 yes , redis-trib 就会将这份配置应用到集群当中,让各个节点开始互相通讯,最后可以得到如下信息:
[OK] All 16384 slots covered
这表示集群中的 16384 个槽都有至少一个主节点在处理, 集群运作正常。
测试redis-cluster:
slaveof配置项。
./redis-trib.rb create --replicas添加主从节点???
注:若报上述错误,则使用redis-cli -c -p 7000端口连接,使用dbsize命令,如果不为零,则使用flushall命令清零。如果报是slave不能清零,
则找到该slave对应的master,执行上述操作。知道dbsize为0.
redis-cli -c -p 7000 shutdown && redis-cli -c -p 7001 shutdown && redis-cli -c -p 7002 shutdown && redis-cli -c -p 7003 shutdown && redis-cli -c -p 7004 shutdown &&redis-cli -c -p 7005 shutdown
redis-server ./7000/redis.conf && redis-server ./7001/redis.conf && redis-server ./7002/redis.conf && redis-server ./7003/redis.conf && redis-server ./7004/redis.conf&& redis-server ./7005/redis.conf
./redis-3.0.5/src/redis-trib.rb create --replicas 1 172.31.2.32:7000 172.31.2.32:7001 172.31.2.32:7002 172.31.2.32:7003 172.31.2.32:7004 172.31.2.32:7005
注:del-node之前需要将该节点./redis-trib.rb reshard 127.0.0.1:7003到其他节点,只有空的实例才能被删除。
如果使用keys * 查询到结果为空,说明当前实例保存数据为空,能够使用del-node命令移除。
将127.0.0.1::7000关掉:redis-cli -c -p 7000 shutdown
更多关于redis-cli操作请参考:http://blog.csdn.net/tantexian/article/details/49924873
接下来再172.31.2.33上面重新启动redis-server来讲该节点添加到上述创建好的172.31.2.32的redis集群中。
第一步还是跟上述步骤一样,安装redis基础环境。
将172.31.2.33上面新跑的实例*:8000 及*:8001加入到集群中来。
cluster集群相关命令,更多redis相关命令见文档:http://redis.readthedocs.org/en/latest/
集群
CLUSTER INFO 打印集群的信息
CLUSTER NODES 列出集群当前已知的所有节点(node),以及这些节点的相关信息。
节点
CLUSTER MEET
CLUSTER FORGET
CLUSTER REPLICATE
CLUSTER SAVECONFIG 将节点的配置文件保存到硬盘里面。
槽(slot)
CLUSTER ADDSLOTS
CLUSTER DELSLOTS
CLUSTER FLUSHSLOTS 移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。
CLUSTER SETSLOT
CLUSTER SETSLOT
CLUSTER SETSLOT
CLUSTER SETSLOT
键
CLUSTER KEYSLOT
CLUSTER COUNTKEYSINSLOT
CLUSTER GETKEYSINSLOT
真是场景的redis集群环境部署:
建议至少三台机器:(其实redis.server服务时PING-PONG无中心架构,且,可以在同一台机器上面启动多个master及slave)
node1:172.31.2.31
node2:172.31.2.32
node3:172.31.2.33
三组一主两从设计:
172.31.2.31:7000(主) 172.31.2.32:7000(从) 172.31.2.33:7000(从)
172.31.2.32:7001(主) 172.31.2.31:7001(从) 172.31.2.33:7001(从)
172.31.2.33:7002(主) 172.31.2.31:7002(从) 172.31.2.32:7002(从)
这样就达到了比较高的稳定性。
jedis使用:
https://github.com/xetorthio/jedis
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联行业资讯频道,感谢您对创新互联的支持。