1.Redis的缓存策略

先删缓存再更新数据库–不用

大概率缓存中是脏数据

先更新数据库再删缓存–应用比较广泛

只有很小的概率会造成脏数据,当缓存中还没有数据的时候

例如线程A,读
线程B 写
A先进入数据库,读取到老数据
B进入数据库,并更新数据数据,清除缓存
A将老数据读入到缓存中,这样缓存中的数据总是老的

所以缓存一定要设置过期时间,避免脏数据一直有

而且删除缓存,会造成高并发的时候,所以大量请求到直接到数据库上,造成雪崩

先更新数据库再更新缓存

这种方案比 ‘先更新数据库再删除缓存’的方案更好,可以避免高并发下瞬间大量请求穿透缓存到数据库上。

而且它也会出现脏数据
建议项目初始化的时候灌入到缓存中

A线程更新
B线程更新,更改缓存
A线程更改缓存 ,虽然B线程是后操作的,但是B的更改被A又覆盖了,造成了脏数据

所以一定要设置缓存的过期时间

read write through

读写,都经过统一的repository,respository对缓存和数据库进行统一的操作;

读—>repository—>cache—>有直接返回,没有读取db,将db缓存到cache中

写—>repository—>cache中有,则更新cache,更新db,cahce中没有,则直接写到db中

write behind

这种方式类似于uninx的页缓存,缓存和持久层数据不一致,只有当缓存空间不足,或者程序退出的时候,或者特定情况下,才会将缓存中的数据刷盘到持久层;

因为页缓存的原因,所以会导致linux系统故障退出的时候,会造成丢失数据的情况

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值