资讯专栏INFORMATION COLUMN

Redis Cluster安全的替换原有数据

notebin / 1311人阅读

摘要:使用背景集群,每个带有一个副本,经常在更新数据时,程序出现卡顿。原因分析单机所有的数据都保存在一个机器上,使用覆盖原有值时不会影响。现在处理思路我们通过一个中间来实现原有数据的更新。查询数据我们通过得到值,通过获取真实的数据。

1.使用背景

redis集群,每个key带有一个副本,经常在更新数据时,程序出现卡顿。

2.原因分析

1.单机Redis:所有的数据都保存在一个机器上,使用rename覆盖原有值时不会影响。
2.集群Redis:所有的数据分布在多台机器上(设置了副本),使用rename覆盖原有值时,当原有值和新值不在一个机器上,涉及到不同服务器之间数据的拷贝,此时访问数据可能会卡住。

3.解决办法

原先处理:

如上图所示,处理流程为新建一个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

相关文章

  • 简单基于springredis配置(单机和集群模式)

    摘要:优点是反序列化时不需要提供类型信息,但缺点是序列化后的结果非常庞大,是格式的倍左右,这样就会消耗服务器的大量内存。使用库将对象序列化为字符串。优点是速度快,序列化后的字符串短小精悍。 需要的jar包:spring版本:4.3.6.RELEASE,jedis版本:2.9.0,spring-data-redis:1.8.0.RELEASE;如果使用jackson序列化的话还额外需要:jac...

    Tychio 评论0 收藏0
  • redis cluster 扩容

    摘要:重新分片,把要删除的主节点的数据槽移动到其他主节点上,以免数据丢失。分区完成当前主节点已经没有数据槽了。这样就可以实现横向动态扩容,新增加的主从节点,用于存储新的数据则可,对以前的节点的数据不会有任何影响。 需求: A redis cluster 集群 40 台集群扩容到 68 台也就是 增加 28 台新的机器 : 一主一从 为一组,一共12组 前期准备 扫描新增扩容服务器ip是...

    call_me_R 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<