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

redis作为缓存,mysql的数据如何与redis同步

先介绍自己的业务背景,是一致性要求高的 还是 允许延迟一致,因为两者的回答不一样。

双写一致性

双写一致性:当修改了数据库的数据也要同时更新缓存的数据,缓存和数据库的数据要保持一致。

读操作:缓存命中,直接返回;缓存未命中查询数据库,写入缓存,设定超时时间

写操作:延迟双删

 

1、此时,先删除缓存,还是先修改数据库?

          无论哪个先后,都会出现问题

2、为什么要删除两次缓存?

        先删除缓存,再操作数据库,有时候会有脏数据,所以在操作数据库之后再删除一次缓存,降低脏数据的出现。

3、为什么要延时双删?

        一般情况下数据库是主从模式,读写分离的,需要延时一会,让主结点把数据同步到从节点,所以需要延时,但延时还是会出现脏数据。

如何数据的保持强一致性呢?

        1)在写数据或读数据的时候添加分布式锁,但效率太低。

        

        2)一般存入缓存中的数据都是读多写少,可以用共享锁和排他锁,但效率还是低,但能保证数据的强一致性

允许延迟

第一种方式:适用MQ中间件,更新MySQL的数据后,发一条消息给MQ,同时缓存服务接收这条消息,将数据同步到缓存中

第二种方式: 不需要修改任何业务代码,利用canal伪装mysql的一个从节点,去读取binlog的日志,并更新缓存

结合自己的业务回答,参考:


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

相关文章:

  • 通过MongoDB Atlas 实现语义搜索与 RAG——迈向AI的搜索机制
  • 〔 MySQL 〕数据类型
  • 【计算机网络】【传输层】【习题】
  • 力扣515:在每个树行中找最大值
  • TCP/IP协议,TCP和UDP区别
  • Oracle 11g rac 集群节点的修复过程
  • 力扣52-最大子序和(java详细题解)
  • AI产品经理系列:如何应对AI时代?
  • 设置 Nginx、MySQL 日志轮询
  • Java-树形图工具类TreeUtil
  • 网通产品硬件设计工程师:百兆超薄网络隔离变压器您知道的有多少呢?
  • 【PyCharm激活码】2024年最新pycharm专业版激活码+安装教程!
  • 【Android】使用 ADB 查看 Android 设备的 CPU 使用率
  • 项目技巧二
  • R语言股价跳跃点识别:隐马尔可夫hmm和 GARCH-Jump对sp500金融时间序列分析
  • “添加”业务功能开发
  • Qt 杨帆起航
  • 【分布式定时任务】XXL-JOB_2.4.1部署与实战
  • 解决Element-ui中Table表格里的show-overflow-tooltip不兼容safari浏览器问题
  • vue-admin-template pan版使用方法
  • 【秋招笔试】8.24阿里控股秋招(研发岗)-三语言题解
  • 使用极狐GitLab进行K3S集群的维护与控制
  • 进程间通信--IPC机制
  • 【技术解析】Spring Boot异步机制:实现高吞吐量的最佳实践
  • 【零知识证明】构建第一个zk
  • 95.WEB渗透测试-信息收集-Google语法(9)