摘要:使用背景集群,每个带有一个副本,经常在更新数据时,程序出现卡顿。原因分析单机所有的数据都保存在一个机器上,使用覆盖原有值时不会影响。现在处理思路我们通过一个中间来实现原有数据的更新。查询数据我们通过得到值,通过获取真实的数据。
1.使用背景
redis集群,每个key带有一个副本,经常在更新数据时,程序出现卡顿。
2.原因分析1.单机Redis:所有的数据都保存在一个机器上,使用rename覆盖原有值时不会影响。
2.集群Redis:所有的数据分布在多台机器上(设置了副本),使用rename覆盖原有值时,当原有值和新值不在一个机器上,涉及到不同服务器之间数据的拷贝,此时访问数据可能会卡住。
原先处理:
如上图所示,处理流程为新建一个key2,数据为value2,我们删除key1和value1,然后重命名key2为key1,数据为value2。
现在处理:
思路:我们通过一个中间key2来实现原有数据的更新。
更新数据:我们新建一个key2,新数据为value2,我们把key1的value值设为key2,value1设置一个过期时间。
查询数据:我们通过key1得到值key2,通过key2获取真实的数据value2。
大家可以关注我的公众号:不知风在何处,相互沟通,共同进步。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/67322.html
摘要:优点是反序列化时不需要提供类型信息,但缺点是序列化后的结果非常庞大,是格式的倍左右,这样就会消耗服务器的大量内存。使用库将对象序列化为字符串。优点是速度快,序列化后的字符串短小精悍。 需要的jar包:spring版本:4.3.6.RELEASE,jedis版本:2.9.0,spring-data-redis:1.8.0.RELEASE;如果使用jackson序列化的话还额外需要:jac...
摘要:重新分片,把要删除的主节点的数据槽移动到其他主节点上,以免数据丢失。分区完成当前主节点已经没有数据槽了。这样就可以实现横向动态扩容,新增加的主从节点,用于存储新的数据则可,对以前的节点的数据不会有任何影响。 需求: A redis cluster 集群 40 台集群扩容到 68 台也就是 增加 28 台新的机器 : 一主一从 为一组,一共12组 前期准备 扫描新增扩容服务器ip是...
阅读 3653·2021-09-07 10:19
阅读 3597·2021-09-03 10:42
阅读 3555·2021-09-03 10:28
阅读 2516·2019-08-29 14:11
阅读 766·2019-08-29 13:54
阅读 1547·2019-08-29 12:14
阅读 377·2019-08-26 12:12
阅读 3578·2019-08-26 10:45