接上一篇《玩转Redis集群(上)》,我们来继续玩~

Redis集群操作实践

数据的分布性

从上面的操作,你可以看到,当存储某一个数据的时候,会分配一个slot,而这个slot从属于某一个Master,也就是说你需要明白,数据是分布的存储在Redis集群当中的。

在线水平扩容

Redis Cluster有一个非常重要的特点就是可以在线的添加节点,实现不影响业务的水平扩容。在这里,我将会在原来6个redis节点上,再添加2个redis节点。做法和以前一致,注意修改redis.conf,然后在启动8007、8008这2个redis实例。

其实,目前虽然启动了新加的2个redis实例,但是它们是不属于集群的。下面,我们来让它们加入集群中。

./redis-trib.rb add-node 192.168.99.121:8007 192.168.99.121:8006./redis-trib.rb add-node 新节点 集群中已经存在的节点

在往集群中添加节点A的时候,需要提供一个在集群中已经存在的节点B的信息。因为知道了B的信息,就知道了整个集群的信息。为什么这么说呢,来,我们看一个文件,你就知道了。

要知道集群中的每一个节点都有这么一个文件,存储着集群中每一个节点的信息:节点的角色、节点的ID、连接状态、slot范围、IP/PORT信息等。仔细观察图中,你可以发现,新加入的8007节点,实际上被默认为master节点,并且没有slot分配!这说明,新加入的节点现在还不可以存储数据,因此我们要为新节点分配slot槽。

[root@mydream121 bin]# ./redis-trib.rb reshard 192.168.99.121:8001

要知道slot都分配在master上,因此其实我们要做的就是从集群的masters上进行重新分配。上面的命令需要指定一个master节点进行reshard分片。

图中要为新加入的节点8007分配500个slot,而且分配的方式是"all",all是什么意思呢?all代表从已经存在的所有的master上均匀的分配一部分slot给8007。当然你可以通过"done"来指定某一个master进行分配。注意分配给8007是通过节点ID来指定的。

按照上面的操作,我将8008节点也加入集群中,我的想法是让8008成为8007的从节点。既然是从节点,就不需要分配slot槽。注意到add-node方式加入的节点,默认就是master节点,因此这里我们得利用replicate指定主节点。

[root@mydream121 bin]# ./redis-trib.rb add-node 192.168.99.121:8008 192.168.99.121:8001

那么到现在,我们就在线完成了对Redis集群的水平扩容。那么如何删除节点呢?删除节点时,数据怎么办呢?对于从节点,删除就删除了,并不要紧,关键是主节点,因为主节点上有slot。因此,在删除主节点前,我们要对主节点的slot进行重新分配,完成数据的迁移。这里我就不再演示了,直接给出命令。

删除主节点:先reshard + 后del-node
删除从节点:直接del-node

Redis实现Session共享

Redis可以被用于Session共享,不过现在CAS实现单点登录更容易些。(CAS以后为大家介绍)

不论是Nginx挂了,还是其中的Tomcat挂掉,都不会丢失Session信息。在实现上,有现成的插件,比如:https://github.com/jcoleman/tomcat-redis-session-manager

Java操作Redis

在单机Redis环境:Jedis

这个没什么好说的,就是给定IP/PORT实例化Jedis操作即可。

Jedis jedis = new Jedis("192.168.99.121", 8001);

在多台Redis环境:ShardedJedis+ShardedJedisPool

这是一种切片的方式来操作redis,通过hash而均匀的分配到pool里的redis机器中。

在Redis集群环境:JedisCluster

与Spring整合

我们直接来看配置文件吧!

同上文Java操作Redis集群的代码对比下,其实XML就是代码的映射。只不过通过spring的方式,帮助我们配置生成了一个bean:redisCluster。我们可以通过注入的方式得到redisCluster,然后我们想干啥就可以干啥,就这么简单~

到这里,redis集群部分整个就结束了,下一篇文章是关于什么的呢,我不告诉你,哈哈~

转载于:https://blog.51cto.com/zhangfengzhe/1904954

玩转Redis集群(下)相关推荐

  1. c语言课程设计微博管理系统,支撑微博亿级社交平台,小白也能玩转Redis集群(实战篇)...

    上篇文章<支撑微博亿级社交平台,小白也能玩转Redis集群(原理篇)>介绍了Redis集群相关原理,这篇文章将介绍Redis Cluster集群的搭建.配置,运维.扩容等具体操作 集群搭建 ...

  2. 玩转 Redis 集群之 Sentinel

    Redis作为内存数据库,需要具备高可用的特点,不然如果服务器宕机,还在内存里的数据就会丢失.我们最常用的高可用方法就是搭建集群,master机器挂了,可以让slave机器顶上,继续提供服务.但是Re ...

  3. 玩转Redis集群之Cluster

    前面我们介绍了国人自己开发的Redis集群方案--Codis,Codis友好的管理界面以及强大的自动平衡槽位的功能深受广大开发者的喜爱.今天我们一起来聊一聊Redis作者自己提供的集群方案--Clus ...

  4. 玩转Redis集群之Codis

    近几年,随着互联网的飞速发展,作为程序员,我们需要处理的数据规模也在不断扩大.如果你使用Redis作为数据库时,面临大数据高并发的场景时,单个Redis实例就会显得力不从心.这时Redis的集群方案应 ...

  5. 玩转Redis集群之Sentinel

    Redis作为内存数据库,需要具备高可用的特点,不然如果服务器宕机,还在内存里的数据就会丢失.我们最常用的高可用方法就是搭建集群,master机器挂了,可以让slave机器顶上,继续提供服务.但是Re ...

  6. windows下配置redis集群,启动节点报错:createing server TCP listening socket *:7000:listen:Unknown error...

    windows下配置redis集群,启动节点报错:createing server TCP listening socket *:7000:listen:Unknown error 学习了:https ...

  7. 集群空间服务器接收不到消息,解决Redis集群条件下键空间通知服务器接收不到消息的问题...

    解决Redis集群条件下键空间通知服务器接收不到消息的问题 键空间通知介绍 键空间通知使得客户端可以通过订阅频道或模式, 来接收那些以某种方式改动了 Redis 数据集的事件. 可以通过对redis的 ...

  8. docker privileged作用_Docker环境下秒建Redis集群,连SpringBoot也整上了!

    为了提高Redis的存储容量和响应速度,有时候我们需要搭建Redis集群.本文主要讲述Redis集群环境的搭建步骤以及如何在SpringBoot中整合使用Redis集群. SpringBoot实战电商 ...

  9. 技术实践第三期|HashTag在Redis集群环境下的使用

    简介:欢迎了解友盟+技术干货第三期内容:Redis集群环境如何按照前缀批量删除缓存.希望能对开发者们在实际应用中有所帮助. 一.背景 数据源列表添加缓存支持,types字段可传多值,如app, min ...

最新文章

  1. 端子排怎么生成_防雷接地图纸怎么看?
  2. resource id 3 php,PHP Warning: stat(): stat failed for Resource id
  3. android的文本框内容居中显示图片,DIV+CSS中让布局居中_背景图片居中_文字内容居中...
  4. Python基础语法-三种函数特殊形参定义以及使用方式
  5. 前端学习(2015)vue之电商管理系统电商系统之实现图片的预览效果
  6. linux的常用操作——makefile
  7. 河北省国家电网计算机专业,河北省国家电网计算机类题目库.doc
  8. 【Http】PKIX(PKIX path building failed) 问题 unable to find valid certification path to requested target
  9. Cookie和Session实现记住我的功能
  10. 泄漏计算机网络安全法情节,第十一章网络安全法第十二章电子商务纠纷的法律解决详细分解.doc...
  11. 理解 __doPostBack--1
  12. VREP学习记录(持续更新)
  13. Win10子系统错误——WslRegisterDistribution failed with error: 0x80070057
  14. 2019辽宁公务员考试行测常识大全:公务员常识40000问(四十八)(2)
  15. java 指纹比对 算法_Java通过sourceafis比对指纹图片的相似度判断指纹
  16. 【观察】打造智能决策“新引擎”,杉数科技勇闯“无人区”
  17. 安卓libc setenv函数内存泄漏
  18. Android调试工具adb的高逼格使用方式
  19. 计算机科学分为哪些领域,计算机科学技术主要包含哪些领域
  20. 给培训出来的Java程序员的一点建议,教你如何找工作

热门文章

  1. 蓝桥杯第六届国赛JAVA真题----密文搜索
  2. 图论算法(五)--求解割点、割边(JAVA)
  3. linux用户命令快捷链接,linux简单命令
  4. mysql timdir_MYSQL学习笔记——数据类型
  5. 按15分钟取数据_Python爬取猫眼电影《飞驰人生》4万多条评论并对其进行数据分析...
  6. VScode中常用element语法
  7. ES学习笔记之-ClusterState的学习
  8. 听歌也能倍速了!网易云音乐PM怎么想的?
  9. 2021年中国便利店发展报告
  10. 头条 上传图片大小_【标签头条】北京市启用进口冷链食品追溯平台;全球包裹热潮助推标签业发展;数字水印实现大规模垃圾分类;安慕希的麻将酸奶包装好真实...