A=1,2
用户1 SET(A,[1,2,3])
用户2 SET(A,[1,2,4])
想要的结果应该是A是1,2,3,4
但是发现并发高了后会出现A=1,2,3或者A=1,2,3
1
xupefei 2015-03-17 21:03:05 +08:00 via Android
实现一个 memcached 的操作类,所有相关操作都通过这个类的单一实例修改。
|
2
gfreezy 2015-03-17 22:02:37 +08:00
SET 操作原本就是替换掉KEY原来的数据。
lz的操作是 value = GET A value.append(x) SET A value 这样吧。这个得用原子操作。Memcache好像没有关于list的操作,如果要实现可以 用Redis list 的append操作,它是保证原子操作的。 |
3
ryd994 2015-03-17 23:36:39 +08:00 via Android
cas
|
4
ryd994 2015-03-17 23:37:54 +08:00 via Android
compare and set
|
5
caoyue 2015-03-18 15:09:43 +08:00
Memcached 有实现 CAS 的版本号机制的吧
|