假设您要在memcache中保留您网站的最后10位访问者列表。
每当有人访问您的网站时,您都希望将它们推送到数组并移出阵列中的第一个访问者。
当然,一个潜在的问题是多个访问者可能会同时覆盖和读取此数组,可能会相互绊倒。当然,memcache中没有原子推送/转换。
可能存在两种近同时用户访问的不一致情况:
如何使用memcache正确完成这样的事情?
答案 0 :(得分:1)
使用CAS令牌。请参阅:http://github.com/memcached/memcached/blob/master/doc/protocol.txt例如,参见PHP实施。这可能取决于“失败”流程的工作,即获取新数据并确定如何修改获胜流程。
答案 1 :(得分:0)
我们为此建立了CAS。