温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何实现分布式缓存redis-cluster环境搭建及wishstack调用Jedis

发布时间:2021-12-10 17:42:00 来源:亿速云 阅读:115 作者:柒染 栏目:云计算

如何实现分布式缓存redis-cluster环境搭建及wishstack调用Jedis,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

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

如何实现分布式缓存redis-cluster环境搭建及wishstack调用Jedis

使用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-cluster环境搭建及wishstack调用Jedis

创建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环境搭建及wishstack调用Jedis

测试redis-cluster:

如何实现分布式缓存redis-cluster环境搭建及wishstack调用Jedis

如何实现分布式缓存redis-cluster环境搭建及wishstack调用Jedis

slaveof配置项。

./redis-trib.rb create --replicas添加主从节点???

如何实现分布式缓存redis-cluster环境搭建及wishstack调用Jedis

注:若报上述错误,则使用redis-cli -c -p 7000端口连接,使用dbsize命令,如果不为零,则使用flushall命令清零。如果报是slave不能清零,

则找到该slave对应的master,执行上述操作。知道dbsize为0.

如何实现分布式缓存redis-cluster环境搭建及wishstack调用Jedis

如何实现分布式缓存redis-cluster环境搭建及wishstack调用Jedis

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命令移除。

如何实现分布式缓存redis-cluster环境搭建及wishstack调用Jedis

如何实现分布式缓存redis-cluster环境搭建及wishstack调用Jedis

如何实现分布式缓存redis-cluster环境搭建及wishstack调用Jedis

将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基础环境。

如何实现分布式缓存redis-cluster环境搭建及wishstack调用Jedis

如何实现分布式缓存redis-cluster环境搭建及wishstack调用Jedis

将172.31.2.33上面新跑的实例*:8000 及*:8001加入到集群中来。

cluster集群相关命令,更多redis相关命令见文档:http://redis.readthedocs.org/en/latest/

  1. 集群

  2. CLUSTER INFO 打印集群的信息

  3. CLUSTER NODES 列出集群当前已知的所有节点(node),以及这些节点的相关信息。

  4. 节点

  5. CLUSTER MEET <ip> <port> 将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。

  6. CLUSTER FORGET <node_id> 从集群中移除 node_id 指定的节点。

  7. CLUSTER REPLICATE <node_id> 将当前节点设置为 node_id 指定的节点的从节点。

  8. CLUSTER SAVECONFIG 将节点的配置文件保存到硬盘里面。

  9. 槽(slot)

  10. CLUSTER ADDSLOTS <slot> [slot ...] 将一个或多个槽(slot)指派(assign)给当前节点。

  11. CLUSTER DELSLOTS <slot> [slot ...] 移除一个或多个槽对当前节点的指派。

  12. CLUSTER FLUSHSLOTS 移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。

  13. CLUSTER SETSLOT <slot> NODE <node_id> 将槽 slot 指派给 node_id 指定的节点,如果槽已经指派给另一个节点,那么先让另一个节点删除该槽>,然后再进行指派。

  14. CLUSTER SETSLOT <slot> MIGRATING <node_id> 将本节点的槽 slot 迁移到 node_id 指定的节点中。

  15. CLUSTER SETSLOT <slot> IMPORTING <node_id> 从 node_id 指定的节点中导入槽 slot 到本节点。

  16. CLUSTER SETSLOT <slot> STABLE 取消对槽 slot 的导入(import)或者迁移(migrate)。

  17. CLUSTER KEYSLOT <key> 计算键 key 应该被放置在哪个槽上。

  18. CLUSTER COUNTKEYSINSLOT <slot> 返回槽 slot 目前包含的键值对数量。

  19. CLUSTER GETKEYSINSLOT <slot> <count> 返回 count 个 slot 槽中的键。

真是场景的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(从) 

这样就达到了比较高的稳定性。

如何实现分布式缓存redis-cluster环境搭建及wishstack调用Jedis

jedis使用:

https://github.com/xetorthio/jedis

如何实现分布式缓存redis-cluster环境搭建及wishstack调用Jedis

如何实现分布式缓存redis-cluster环境搭建及wishstack调用Jedis

如何实现分布式缓存redis-cluster环境搭建及wishstack调用Jedis

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI