当前位置: 首页 > article >正文

Redis面试---缓存问题

一、Redis和MySQL数据一致性解决方案

(一)借助lua脚本

Redis命令是单线程,不会存在数据并发安全问题,如果要保证多条命令并发执行的原子性,可以将多个Redis命令存放在lua脚本中,然后再统一执行。
在数据一致性问题方面,将Redis伪装成MySQL的slave,按照MySQL的主从交互协议,当MySQL开启binary日志之后,master数据变动的逻辑日志就会记录到binary日志中,然后解析binary日志就可以得到变更的数据,然后同步进Redis,从而实现MySQL和Redis缓存数据的一致性。

(二)延迟双删

新增数据对数据缓存一致性没有影响,刚开始缓存中是没有数据的,第一次查询完MySQL后数据才存入Redis缓存。
对于更新操作来说,不管先更新MySQL还是先更新Redis缓存都有可能存在其中一方更新失败而最终存储层和缓存层数据不一致。
延迟双删就是先删除缓存,然后等更新数据的事务提交之后,睡眠等待一定时间,然后再删除缓存一次,这个睡眠等待时间为了让数据更新的数据能够全部同步进缓存,第二次删除是为了清除数据更新完成并同步到缓存之前产生的脏数据。这个睡眠时间是根据具体业务请求量评估出来的,在业务请求总时间的基础上加上适当的时间就是应该睡眠等待的时间。对于存在多节点主从同步的场景,睡眠等待时间就是在节点同步所需时间的基础上加上一定时间。

二、缓存问题及解决方案


http://www.kler.cn/a/307798.html

相关文章:

  • 通过Python 调整Excel行高、列宽
  • AutoHotKey自动热键AHK-正则表达式
  • Javascript中的深浅拷贝以及实现方法
  • 玩转ChatGPT:文献阅读 v2.0
  • Javascript高级—常见算法
  • 低代码牵手 AI 接口:开启智能化开发新征程
  • 7------MTK芯片专用工具NZO 解锁 修复红米9A 10A双串 NV损坏故障 工具预览与操作解析
  • 华为大获全胜 老美正在颤抖
  • 智能硬件从零开始的设计生产流程
  • 学习笔记(一)
  • sicp每日一题[2.12]
  • 进阶SpringBoot之 Swagger 分组与接口注释
  • 中级练习[10]:Hive SQL
  • MySQL数据的增删改查(一)
  • 认识原码反码补码
  • 一文快速上手-create-vue脚手架
  • 2024年CAD图纸加密软件|加密图纸软件推荐:10款高效CAD加密软件
  • 苍穹外卖Day01
  • 技嘉RTX 4070 SUPER WUKONG OC显卡评测:天命人最佳2K游戏搭档 温度仅61℃
  • UE5-俯视角色移动(蓝图)01
  • 解密AI创作:提升Prompt提示词的提问技巧
  • 学习之git的远程仓库操作的常用命令
  • C++3D迷宫
  • GO 反射
  • CNSS Recruit 2024 Web方向 题解WriteUp
  • git编译安装报错