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 的版本号机制的吧 |