Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 更新memcached条目_Database_Memcached_Data Consistency - Fatal编程技术网

Database 更新memcached条目

Database 更新memcached条目,database,memcached,data-consistency,Database,Memcached,Data Consistency,我目前正在开发一个为阅读而优化的系统。该体系结构是一个MySQL作为权威的持久存储,以及MySQL数据库和客户端之间的memcache层。写入时有发生,但频率远低于读取 数据库运行在一个相对较弱的主机上,因此我有动力尽量减少对数据库的访问。目前我心目中的协议是这样的: [DB和memcache条目都与乐观锁定的版本控制序列相关联] 在启动时,一个专用进程将当前所有条目从db加载到memcache 当写入发生时,它将: a。从memcache加载条目版本(memcache版本) b。在db事务中

我目前正在开发一个为阅读而优化的系统。该体系结构是一个MySQL作为权威的持久存储,以及MySQL数据库和客户端之间的memcache层。写入时有发生,但频率远低于读取

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

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

  • 在启动时,一个专用进程将当前所有条目从db加载到memcache
  • 当写入发生时,它将:
    • a。从memcache加载条目版本(memcache版本)
    • b。在db事务中,尝试更新db,如果(db条目版本<加载的memcache版本+1),成功后db条目版本将更新为(memcache版本+1)
    • c。如果b成功,则继续使用新条目更新memcache,版本=(memcache版本+1)
  • 同时,专用进程周期性地从数据库加载所有数据,并将它们放入memcache,以防一些写操作没有传播到memcache。可能会导致一些比赛条件在这里与2,但我估计这是可以接受的

  • 我最基本的假设是,对于任何时候的一个条目,(memcache版本)+1代表一篇好的第一篇文章!为什么
    某些写入不会传播到memcache
    ?这会使整个解决方案复杂化。这可能会有一点帮助!