1. 数据一致性
我们知道,Redis 主要是用来做缓存使用,只要使用到缓存,无论是本地内存做缓存还是使用 Redis 做缓存,那么就会存在数据同步的问题。
一般情况下,我们都是先读缓存数据,缓存数据有,则立即返回结果;如果没有数据,则从数据库读数据,并且把读到的数据同步到缓存里,提供下次读请求返回数据。
这样能有效减轻数据库压力,但是如果修改删除数据库中的数据,而内存是无法感知到数据在数据库的修改。这样就会造成数据库中的数据与缓存中数据不一致的问题,那该如何解决呢?
通常的方案有以下几种:
- 先更新缓存,在更新数据库;
- 先更新数据库,在更新缓存;
- 先删除缓存,在更新数据库;
- 先更新数据库,在删除缓存。
2. 先更新缓存,在更新数据库
这个方案我们一般不考虑。原因是更新缓存成功,更新数据库出现异常了,导致缓存数据与数据库数据完全不一致,而且很难察觉,因为缓存中的数据一直都存在。
3. 先更新数据库,在更新缓存
这个方案也我们一般不考虑,原因跟第一个一样,数据库更新成功了,缓存更新