所谓CAS(check and set),即在写操作时,先检查数据是否被别的线程修改过。其基本原理就是对每次存储的对象分配一个版本号(casUnique)。客户端每次读取数据时,调用gets,Memcache返回当前数据的casUnique,在客户端提交数据的时候,客户端将此casUnique一起提交,Memcache会判断此casUnique是否是当前版本最新的casUnique,如果不是,则本次操作失效,如果是,则操作成功。对于操作失效的情况,我的处理是让此请求重复执行一定的次数,如果执行完这个次数之后仍未成功,则返回“系统繁忙,请稍后再试”。其操作过程如下图所示: