使用memcached和像MySQL这样的rdbms时的缓存一致性

cod*_*der 10 memcached caching consistency distributed-computing race-condition

本学期我已经学习了数据库类,我们正在研究如何在RDBMS和缓存服务器(如memcached)之间保持缓存一致性.存在竞争条件时会出现一致性问题.例如:

  1. 假设我get(key)从缓存中执行了操作,并且存在缓存未命中.因为我得到了缓存未命中,我从数据库中获取数据,然后put(key,value)进入缓存.
  2. 但是,可能会发生竞争情况,其他一些用户可能会删除我从数据库中获取的数据.此删除可能在我put进入缓存之前发生.

因此,理想情况下put不应该进入缓存,因为数据在数据库中存在的时间更长.

如果缓存条目具有TTL,则缓存中的条目可能会过期.但是,仍有一个窗口,其中缓存中的数据与数据库不一致.

我一直在寻找那些谈论这类问题的文章/研究论文.但是,我找不到任何有用的资源.

小智 0

使用内存缓存中保存的变量作为锁定信号怎么样?

每个 memcache 命令都是原子的

从数据库检索数据后,切换锁定

将数据放入内存缓存后,关闭锁定

从数据库删除之前,检查锁定状态