Redis-缓存读写策略
约 414 字大约 1 分钟
Redis-缓存读写策略
- 旁路缓存
- 缓存击透
- 异步缓存写入
旁路缓存
读取
- 判断是否在缓存当中,如果在,获取缓存数据返回
- 如果不在缓存
- 读取数据库返回
- 将数据库数据加到缓存当中
写
- 更新数据库
- 删除缓存
存在问题
在写的时候为什么不先删除缓存再更新数据库?
- 会存在缓存和数据库不一致的问题,存在一种情况:request-a在更新数据库,request-b在获取数据,缓存不存在,会读取数据库数据,将数据加到缓存当中,然后返回。此时clienta更新数据库完成,数据库当中的数据和request-b返回的缓存数据可能就会存在不一致的情况
读写穿透
读取
- 判断缓存是否存在,如果存在,直接返回
- 如果不存在,由缓存服务读取数据库数据,写入缓存,然后返回
写
- 判断缓存当中是否存在,如果不存在,由cache服务更新db
- 判断缓存当中是否存在,如果存在,cache服务自己更新cache,然后更新db,同步更新cache和db
异步缓存写入
读取
- 读取和读写穿透保持一致
写
- 和读写穿透唯一区别是,读写穿透是同步写入db和cache,而异步缓存写入是先更新cache,异步更新db
总结
- 实际工作当中运用最多的其实就是旁路缓存,而另外两种读写穿透和异步缓存写入其实用的不多
Powered by Waline v3.1.3