文章目录
一. 用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的字段保存结果,会不断被覆盖。其他都是读写数据库