首页 > 数据库 >工作场景中的Redis主从不一致

工作场景中的Redis主从不一致

时间:2023-01-07 22:13:15浏览次数:42  
标签:pipeline 场景 Redis 展现 节点 命令 主从

背景

某种类型页面的数据缓存时间是6分钟,上沙盒之后,发现在该类型页面下不同的实际页面的数据有些展现,有些不展现,此外,刚刚展现的同一个页面刷新后数据就不展现了,再刷新又展现了,这些情况持续了40分钟,然而上线后再验数据就没有任何问题,属实有点抽象。

思考

后面看别人提交的代码,发现他们把Redis的前缀key版本号改了,而我当时没有修改。通过修改前缀key版本号,读从节点就读不到缓存,会去读主。不过这会导致该key前缀的缓存全部失效,而且上线的时候也没有做缓存预热,还好流量不大且没有热点key,可以顶住,但存在着一定风险的。

仔细看了下,咱部门用的是云上Redis Cluster,版本4.0,有8个分片,一主一从,单机使用10G内存。为了提高性能,从节点支持读,存在主从不一致的问题。

不过,仔细想一想,其实改了版本号,只是能尽早看到效果,而不能解决主从延迟的问题。主从延迟会让slave读取到旧数据,因为同步是需要时间的。这也是为什么第二天在部分页面上,如果快速刷新几次,还是存在有时候展现数据,有时候不展现数据的情况。

解决方案:

  • 优化主从节点间的网络环境
  • 监控主从延迟(通过offset判断),如果slave延迟过大,强制读主

从节点同步落后于主节点的可能原因有两个:

  1. 主从节点之间的网络延迟
  2. 从节点接收到主节点的命令,但由于是单线程,前面正在处理一些耗时的命令(如pipeline批处理),无法及时进行同步。

pipeline批处理指的是,客户端将多个命令一起发送给服务器,等到服务器执行完所有命令,再一起返回给客户端,而不是发一条命令等待返回后再发送下一条命令。通过减少网络交互从而提升性能。

pipeline和lua脚本对比:

  • 原子性:lua脚本具有原子性,而pipeline虽然将多个命令一次性传输到服务端,但在服务端执行时仍然是多个命令,不具有原子性。
  • 使用场景:lua脚本适合简单的事务场景,pipeline更适合多个命令之间没有关系,不需要原子性,且需要提高程序响应速度的场景。

Redis三种集群都是带着主从的,所以主从延迟是规避不了的,只能尽量减少其影响。

标签:pipeline,场景,Redis,展现,节点,命令,主从
From: https://www.cnblogs.com/sjmuvx/p/17033656.html

相关文章

  • Redis查询之RediSearch和RedisJSON讲解
    目录1Redis查询1.1RedisMod介绍1.2安装Redis1.3RediSearch+RedisJSON安装1.3.1下载安装1.3.2修改配置1.4RedisJSON操作1.4.1基本操作1.4.1.1保存操作JSON.SET1.4.......
  • 场景编程集锦-月光族的期待
    1.场景描述“月光族”是指没到下一个发薪日,工资就被全部花光的一群人。这个称谓是一个没有贬义的中性词。“月光族”通常是有知识有文化、有固定的工作收入,秉持着乐观豁达......
  • Redis
    Redis安装1、Redis官网下载2、tarzxvfredis目录-C/usr/local3、安装gccyuminstallgcc-c++4、编译(在/usr/local/redis目录)make5、执行(进入src目录)makei......
  • Linux:使用snap安装Redis
    文档官网​​https://snapcraft.io/​​红帽Linux平台下安装教程​​https://snapcraft.io/docs/installing-snap-on-red-hat​​搜索应用​​https://snapcraft.io/se......
  • 场景编程集锦-应对能源危机
    1.场景描述受俄乌战事的影响,全球能源价格上涨,引发欧盟地区通胀加剧。许多国家和地区面临着汽车加油站缺油断气、电力供应紧张、工业和生活燃气短缺等严峻形势,为了应对能源......
  • 使用 web workers 及 基本原理 和 应用场景
    众所周知,Javascript是运行在单线程环境中,也就是说无法同时运行多个脚本。假设用户点击一个按钮,触发了一段用于计算的Javascript代码,那么在这段代码执行完毕之前,页面是无法......
  • 【Redis技术探索】「数据迁移实战」手把手教你如何实现在线+离线模式进行迁移Redis数
    从实战出发使用RedisShake进行Redis数据在线+离线模式迁移指南RedisShake基本介绍​​RedisShake​​是基于​​redis-port​​基础上进行改进的是一款开源的Redis迁移工具,......
  • 【Redis技术探索】「数据迁移实战」手把手教你如何实现在线+离线模式进行迁移Redis数
    从实战出发使用RedisShake进行Redis数据在线+离线模式迁移指南RedisShake基本介绍RedisShake是基于redis-port基础上进行改进的是一款开源的Redis迁移工具,支持Cluster......
  • redis事件通知设置
    概述开发让给redis集群加个key过期通知的配置,特此了解这个配置事件通知redis事件通知(notify-keyspace-eventsEx)Keyspace通知使客户端可以通过订阅频道来接收那些以......
  • 验证功能访问Redis的次数和命令
    背景公司内部在进行性能调优,调优有多个方法.应用Redis方面主要的调优有:1.进行redis键值对大小的处理.2.进行redis键值对过期时间的处理.3.减少连接数,减少网络......