这是我参与「第五届青训营 」伴学笔记创作活动的第3天。
今天学习 Redis 缓存读写策略相关知识。
常见 Redis 缓存策略有以下四种:
- Cache Aside 旁路缓存
- Read Through 读穿透
- Write Throug 写穿透
- Write Behind 异步缓存写入
这些缓存读写策略各有优劣,没有最佳策略。通常需要我们根据具体的业务场景选择更适合的策略。下面对其分别进行介绍。
一、 Cache Aside 旁路缓存
简单来说,旁路缓存就是指 Redis 作为缓存,只能被动的被调用,这是一种最常见的缓存模式。旁路缓存的读取操作一般为:
- 在缓存中查找数据,若查找到则直接返回。
- 若未查找到,在数据库中继续查找并返回。
- 将所查找到的数据存入缓存。
只读类型的旁路缓存的写操作为(注意顺序):
- 将数据直接写入数据库。
- 删除缓存中存在的相应数据。
二、 Read/Write Through 读/写穿透
读写穿透中缓存为主要的数据存储。读取操作一般为:
- 从缓存中查找数据,查找到就直接返回。
- 若未查找到,先从数据库中加载,写入缓存后响应。
写操作步骤为:
- 在缓存中查找,缓存中不存在该数据,直接更新数据库。
- 缓存中存在该数据,则先更新缓存,然后缓存服务自己更新数据库。
三、 Write Behind 异步缓存写入
异步缓存比较少见,它和写入和读/写穿透相似,两者都是由缓存服务来负责缓存和数据库的读写。但是,两个又有很大的不同:读/写穿透是同步更新缓存和数据库,而异步缓存写入则是只更新缓存,不直接更新是数据库,而是改为异步批量的方式来更新数据库。