首页 > 其他分享 >缓存与DB数据一致性问题解决的几个思路

缓存与DB数据一致性问题解决的几个思路

时间:2023-06-26 15:07:44浏览次数:54  
标签:缓存 发生变化 DB 文章 一致性 数据 主键

使用缓存必然会碰到缓存跟真实数据不一致的问题,虽然我们会在数据发生变化时通知缓存,但是这个延迟时间内必然会导致数据不一致,如何解决一般有下面几个思路:

首先,当这个延迟如果在业务上时可以接受的,比如文章阅读、评论次数这样的缓存数据,这样的问题这里不考虑。

 

类似数据库分布式事务的方式

可以采用类似数据库分布式事务的方式,当数据发生变化时,通知缓存和DB,缓存和DB均用乐观锁实现事务。典型的通知可以用MQ(消息队列)。

参考:

http://coolshell.cn/articles/10910.html

 

 

巧用缓存主键

当缓存过期时,缓存的主键发生变化,比如:文章的缓存,我们主键用文章ID+文章最后更新时间。一旦文章发生变化,获取缓存的主键也发生变化,自然就确保每次更新后,缓存取得是最新的数据。

参考:
Web应用的缓存设计模式
http://robbinfan.com/blog/38/orm-cache-sumup

 

参考资料:
cache一致性问题

标签:缓存,发生变化,DB,文章,一致性,数据,主键
From: https://blog.51cto.com/u_15588078/6554250

相关文章

  • adb logcat使用方法
    adblogcat命令使用一.android日志介绍1.打印日志的原理android日志系统包括一个内核驱动程序和用于存储日志消息的内核缓冲区。一个用于查看日志消息的独立程序logcat。2.日志的类型4个不同日志缓冲区,为系统的不同部分提供日志记录,所有的缓冲区都在设备的/dev/log下:/dev/log......
  • adb常用命令
    Adb常用命令一.连接命令1.连接某台设备adbconnectip:port2.断开某台设备连接adbdisconnectip:port二.查询类命令1.查询是否已连接的设备adbdevices2.查询连接设备状态adbget-state3.查询设备已安装的应用adbshellpmlistpackage-s列出系统应用adbshellpm......
  • adb下载与环境配置
    adb下载与环境配置一.adb下载官方下载地址:https://adbdownload.com/二.adb配置环境变量1.进入到D:\platform-tools内部2.进入系统-高级设置-环境变量-系统变量-path-新建,添加上面的工具包路径3.在cmd命令输入adb,检查是否配置成功(注意:重新开启cmd)......
  • adb连接夜神模拟器
    adb连接安卓模拟器一.检查夜神nox_adb.exe的版本与本地的adb版本是否一致如果本地adb和夜神adb版本不一致,会相互查杀1.检查本地adb的版本在cmd命令行中输入:adbversion,为1.0.41版本2.检查夜神中nox_adb.exe版本进入到夜神的安装包的bin目录下,按住shif,点击右键,打开Powershell在命令......
  • adb无线连接真机
    adb无线连接真机注意:adb无线连接真机,pc端和手机端必须处于同一局域网一.usb连接真机,通过adb重置端口号adbtcpip5555端口号:5555为自定义(每次断开都要重置)二.通过adb连接手机的ip:55551.查看手机的ip地址设置-关于手机-状态信息-ip2.拔出usb数据线,进入开发者选项打开usb调试和选择U......
  • adb连接android真机
    adb连接android真机一.环境准备1.usb数据线2.电脑安装adb调试工具3.开启开发者调试模式:设置-关于手机-版本号,连续点击7次版本4.启用开发者选项模式:打开USB调试开关,同意调试信息,选择usb配置为MTP二.使用adb命令检查是否连接上手机设备1.在cmd命令输入:adbdevices2.adb连......
  • Android adb shell content命令
      adbshellcontentusage:adbshellcontent[subcommand][options]usage:adbshellcontentinsert--uri<URI>[--user<USER_ID>]--bind<BINDING>[--bind<BINDING>...][--extra<BINDING>...] <URI>acontentprovide......
  • 干掉Navicat?阿里Chat2DB来了!
    最近朋友圈被阿里的Chat2DB刷屏了,磊哥也是第一时间下载并体验了阿里巴巴的Chat2DB,今天就迫不及待和大家分享一下。什么是Chat2DB?Chat2DB是一款由阿里巴巴开源免费的多数据库客户端工具,支持windows、mac本地安装,也支持服务器端部署,web网页访问。和传统的数据库客户端软件......
  • MyBatis 缓存
     MyBatis一级缓存1一级缓存原理在一次SqlSession中(数据库会话),程序执行多次查询,且查询条件完全相同,多次查询之间程序没有其他增删改操作,则第二次及后面的查询可以从缓存中获取数据,避免走数据库。 每个SqlSession中持有了Executor,每个Executor中有一个LocalCache。当用......
  • NetCore使用使用Scaffold-DbContext命令生成数据库表实体类
    1.根据数据库生成实体类ModelsScaffold-DbContext"DataSource=.;InitialCatalog=TEST;UserID=sa;Password=pwd;TrustServerCertificate=True"Microsoft.EntityFrameworkCore.SqlServer-OutputDirModels-Force  2.根据数据表生成实体类ModelsScaffold-DbConte......