如何保存缓存和数据库的一致性?
- 数据库有数据,缓存没有数据;
- 数据库有数据,缓存也有数据,数据不相等;
- 数据库没有数据,缓存有数据。
使用缓存的策略:
- 首先尝试从缓存读取,读到数据则直接返回;如果读不到,就读数据库,并将数据会写到缓存,并返回。
- 需要更新数据时,先更新数据库,然后把缓存里对应的数据失效掉(删掉)
可见第一种和第二种,如果遵守了使用缓存的策略,就不会产生不一致的情况,因此,最终的结论,需要解决的不一致,产生的原因是更新数据库成功,但是删除缓存失败。
解决方案大概以下几种:
1、对删除缓存进行重试,推荐采用「先更新数据库,再删除缓存」方案,并配合「消息队列」或「订阅变更日志」的方式来做。
2、定期全量更新,简单的说,就是定期把全部缓存清理,然后在全量加载。
3、给所有的缓存一个失效期。
对redis事物的理解?
添加链接描述
Redis慢查询?
添加链接描述