摘要:使用背景集群,每个带有一个副本,经常在更新数据时,程序出现卡顿。原因分析单机所有的数据都保存在一个机器上,使用覆盖原有值时不会影响。现在处理思路我们通过一个中间来实现原有数据的更新。查询数据我们通过得到值,通过获取真实的数据。
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
摘要:使用背景集群,每个带有一个副本,经常在更新数据时,程序出现卡顿。原因分析单机所有的数据都保存在一个机器上,使用覆盖原有值时不会影响。现在处理思路我们通过一个中间来实现原有数据的更新。查询数据我们通过得到值,通过获取真实的数据。 1.使用背景 redis集群,每个key带有一个副本,经常在更新数据时,程序出现卡顿。 2.原因分析 1.单机Redis:所有的数据都保存在一个机器上,使用re...
摘要:优点是反序列化时不需要提供类型信息,但缺点是序列化后的结果非常庞大,是格式的倍左右,这样就会消耗服务器的大量内存。使用库将对象序列化为字符串。优点是速度快,序列化后的字符串短小精悍。 需要的jar包:spring版本:4.3.6.RELEASE,jedis版本:2.9.0,spring-data-redis:1.8.0.RELEASE;如果使用jackson序列化的话还额外需要:jac...
摘要:同理得机子移动完后为的目录结构图如下同理安装和启动插件集群的启动需要用到实现的插件,所以需要先安装环境和其插件,命令如下步骤一建议不使用安装。 摘要 用两台虚拟机(ip: 10.60.44.76、ip: 10.60.44.105)共 6 个节点,一台虚拟机 3 个节点,模拟出 3 master、3 salve 环境 redis 版本:redis-3.2.4 linux 版本:cent...
摘要:具体来说,持久化相当于备份数据库状态,而持久化是备份数据库接收到的命令,所有被写入的命令都是以的协议格式来保存的。集群没有并使用传统的一致性哈希来分配数据,而是采用另外一种叫做哈希槽的方式来分配的。 redis是一款高速缓存非关系型数据库,为什么说他是高速的,应为其读写都在内存中,这也是非关系行数据库的一大特点,Redis是以key-value的形式存储的。下面将从以下几点来介绍red...
摘要:具体来说,持久化相当于备份数据库状态,而持久化是备份数据库接收到的命令,所有被写入的命令都是以的协议格式来保存的。集群没有并使用传统的一致性哈希来分配数据,而是采用另外一种叫做哈希槽的方式来分配的。 redis是一款高速缓存非关系型数据库,为什么说他是高速的,应为其读写都在内存中,这也是非关系行数据库的一大特点,Redis是以key-value的形式存储的。下面将从以下几点来介绍red...
阅读 3464·2021-09-07 10:19
阅读 3480·2021-09-03 10:42
阅读 3450·2021-09-03 10:28
阅读 2437·2019-08-29 14:11
阅读 701·2019-08-29 13:54
阅读 1479·2019-08-29 12:14
阅读 309·2019-08-26 12:12
阅读 3469·2019-08-26 10:45