Database 更新memcached条目
我目前正在开发一个为阅读而优化的系统。该体系结构是一个MySQL作为权威的持久存储,以及MySQL数据库和客户端之间的memcache层。写入时有发生,但频率远低于读取 数据库运行在一个相对较弱的主机上,因此我有动力尽量减少对数据库的访问。目前我心目中的协议是这样的: [DB和memcache条目都与乐观锁定的版本控制序列相关联]Database 更新memcached条目,database,memcached,data-consistency,Database,Memcached,Data Consistency,我目前正在开发一个为阅读而优化的系统。该体系结构是一个MySQL作为权威的持久存储,以及MySQL数据库和客户端之间的memcache层。写入时有发生,但频率远低于读取 数据库运行在一个相对较弱的主机上,因此我有动力尽量减少对数据库的访问。目前我心目中的协议是这样的: [DB和memcache条目都与乐观锁定的版本控制序列相关联] 在启动时,一个专用进程将当前所有条目从db加载到memcache 当写入发生时,它将: a。从memcache加载条目版本(memcache版本) b。在db事务中
- a。从memcache加载条目版本(memcache版本)
- b。在db事务中,尝试更新db,如果(db条目版本<加载的memcache版本+1),成功后db条目版本将更新为(memcache版本+1)
- c。如果b成功,则继续使用新条目更新memcache,版本=(memcache版本+1)
我最基本的假设是,对于任何时候的一个条目,(memcache版本)+1代表一篇好的第一篇文章!为什么
某些写入不会传播到memcache
?这会使整个解决方案复杂化。这可能会有一点帮助!