Redis缓存更新策略(与数据库一致性问题)

一致性问题是指当数据库中的数据发生更新时,如何保证Redis缓存中的数据也能及时更新,以避免数据不一致的情况发生。

缓存更新策略

内存淘汰:不用维护,Redis自动淘汰部分数据,只能一定程度下保证一致性,一致性差(LRU最久未使用算法);
超时剔除:通过expire()方法给缓存数据添加有效时间TTL,时间到期后自动删除,一致性一般;
主动更新:自己编写业务逻辑,每当修改数据库时,更新Redis缓存,一致性好;(Cache-Aside)

主动更新

更新:每当数据库更新,缓存都要更新,开销较大,可能很多是无效操作(用户没查); ×
删除:更新数据库时让缓存失效,用户查询时再去更新 

那么是先删除缓存还是先删除数据库中的要更新的数据

结论:先修改数据库,再删除缓存

原因其实很好想:

在此情况下,线程2读到的是数据还未更新的值

  1. Cache-Aside(旁路缓存)策略:

    • 当应用程序需要获取数据时,首先从缓存中查询数据。
    • 如果数据在缓存中存在,则直接返回给应用程序。
    • 如果数据在缓存中不存在,则从数据库中获取数据,并将数据存储到缓存中,然后再返回给应用程序。
    • 当数据库中的数据发生更新时,同时更新数据库和删除对应的缓存项。下次需要该数据时,按照上述步骤重新缓存。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值