假设使用内存缓存(如redis/memcache)的策略是:
读取:客户端将首先尝试从缓存中读取。如果缓存未命中,则从数据库中读取数据并将其放入缓存。
写入:先更新数据库,然后删除缓存条目。
- 客户端A从缓存中读取数据未命中。
- 客户端A从数据库中读取数据。
- 客户端B更新数据库中相同的条目。
- 客户端B删除缓存中(不存在的)条目。
- 客户端A将(过期的)条目放入缓存中。
- 客户端C将会从缓存中读取到过期的数据。