缓存和数据库同时使用的【数据一致性解决方案】优劣对比

一. 用redis和数据库一起做缓存的常用的几种方案

1. 读写方案

1.1 双写单读- 缓存失效问题

写数据是往数据库里面去写,也往redis同步去插入数据
读数据是只从redis读取

1.2 单写双读—>key value可能读到旧数据,是有问题的

写数据:是往数据库里面去写,写完数据库会删缓存
读数据:是只从redis读取,读不到数据再去读数据库读放到redis并返回

1.3 双写双读-多线程问题

写数据:是往数据库和redis里面去写
读数据:是从redis读取,读不到数据再去读数据库

二. 数据最终一致性解决方案

1. 业务方案 双写双读的异步读写分离方案

写数据是往数据库里面去写,然后会发送消息异步往redis去插入数据。
读数据是只从redis读取,读不到查数据库更新缓存
时间差读数据的话,如果要求不精准就是如上。
要求实时的话可以

2… 延时双删-延时低

写数据库
写库之前删掉缓存,然后读数据库数据,并且读到缓存中
写库之后再删缓存中数据
保证写完之后之后数据和redis一致,在写的过程中无法保证
读数据库
先查缓存中,没有就去数据库查,然后同步到缓存

三. 临时数据缓存

一些临时数据,不需要持久化保存的,也会用到redis,比如
key-failed: xx
key-successcode: xx
这些key的字段保存结果,会不断被覆盖。其他都是读写数据库

猜你喜欢

转载自blog.csdn.net/weixin_45581597/article/details/127844624