redis缓存同步策略_缓存同步策略初学者指南

redis缓存同步策略

介绍

当信息分散在各个数据提供者之间时,记录系统是权威的数据源。 引入缓存解决方案时 ,我们会自动复制数据。 为避免不一致的读取和数据完整性问题,同步数据库和缓存(无论何时对系统进行更改)都是非常重要的。

有多种方法可以使高速缓存与基础数据库保持同步,本文将介绍一些最常见的高速缓存同步策略。

暂存

应用程序代码可以手动管理数据库和缓存信息。 应用程序逻辑在命中数据库之前检查高速缓存,并在任何数据库修改后更新高速缓存。

茶side

混合缓存管理和应用程序并不是很吸引人,特别是如果我们必须在每种数据检索方法中重复这些步骤时。 利用面向方面的缓存拦截器可以减轻缓存泄漏到应用程序代码中的风险,但这并不能使我们确保数据库和缓存都正确同步。

通读

无需管理数据库和缓存,我们可以简单地将数据库同步委托给缓存提供程序。 因此,所有数据交互都是通过缓存抽象层完成的。

快读

提取缓存条目后,缓存会验证缓存元素的可用性并代表我们加载基础资源。 该应用程序将高速缓存用作记录系统,并且高速缓存能够按需自动填充。

直写

类似于通读数据获取策略,每次更改缓存条目时,缓存都可以更新基础数据库。

高速缓存直写

尽管数据库和缓存是同步更新的,但是我们可以根据当前的业务需求自由选择事务边界。

  • 如果必须具有高度的一致性,并且缓存提供程序提供了XAResource,则我们可以在同一全局事务中注册缓存和数据库。 因此,数据库和缓存在单个原子工作单元中进行更新
  • 如果一致性可能被削弱,我们可以按顺序更新缓存和数据库,而无需使用全局事务。 通常,首先更改缓存,如果数据库更新失败,则缓存可以使用补偿操作来回滚当前事务更改

后写

如果没有强一致性要求,我们可以简单地使高速缓存更改入队并定期将其刷新到数据库。

缓存写在后面

Java Persistence EntityManager (第一级缓存)采用此策略,所有实体状态转换都在当前运行的事务结束时(或在发出查询时)刷新。

尽管它破坏了事务保证,但是后缓存策略可以胜过直写策略,因为可以分批更新数据库,并且还减少了DML事务的数量。

翻译自: https://www.javacodegeeks.com/2015/04/a-beginners-guide-to-cache-synchronization-strategies.html

redis缓存同步策略

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值