更新memcached条目

时间:2013-05-17 22:21:20

标签: database memcached data-consistency

我目前正在开发一个针对读取优化的系统。该体系结构是MySQL作为权威的持久存储,以及M​​ySQL数据库和客户端之间的内存缓存层。写作时有发生,但比阅读频率低得多。

db正在一个相对较弱的主机上运行,​​因此我有动力尽量减少对db的访问。我心目中的当前协议是这样的:

[DB和memcache条目都与乐观锁定的版本控制序列相关联]

  1. 在启动时,专用进程将所有当前条目从db加载到memcache。
  2. 当写入发生时,它将:
    • 一个。从memcache(memcache版本)加载条目版本。
    • 湾在db事务中,尝试更新db if(db entry version< loaded memcache version + 1),成功后,db entry version将更新为(memcache version + 1)。
    • ℃。如果b成功,继续使用新条目更新memcache并且版本=(memcache version + 1)
  3. 同时,专用进程定期从db加载所有数据并将它们放入memcache,以防万一有些写入没有传播到memcache。可能会导致某些竞争条件为2,但我估计这是可以接受的。
  4. 我当前的假设是,对于任何时候的条目,(memcache版本)< =(db版本),因此来自2的多个并发写入不会导致竞争条件。

    有没有人能从这个设计中找到任何问题?谢谢!

0 个答案:

没有答案