Redis Cluster安全的替换原有数据

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。

大家可以关注我的公众号:不知风在何处,相互沟通,共同进步。