cas命令的作用?

Q:cas命令的功能与replace命令类似,是用于替换已存在的key(键)的value(数据值),区别在于使用cas替换数据时需要多添加一个令牌值(token)参数。

令牌值(token)是什么?

Q:可以理解为key(键)的“版本号”,每次对key(键)的value(数据值)做了修改,都会更新它的token。

实例:

1、创建一个key为test,value为memcached的实例。

memcached的cas理解_运维


2、获取test的token,值为1。

memcached的cas理解_数据库_02



3、使用cas命令不携带token值,报ERROR。

memcached的cas理解_数据库_03


4、使用cas命令携带错误的token值,报EXISTS。

memcached的cas理解_运维_04


5、使用cas命令携带正确的token值,执行成功。

memcached的cas理解_运维_05


6、再次获取test的token值,可以看到已经再原来的基础上加1。

memcached的cas理解_memcached_06



总结:只有携带正确的token值才能成功修改数据;cas命令的作用是当不同的客户端同时并发修改某个key对应的数据时,当执行第一个客户端发来的修改命令后会立马更新token,此时由于其它客户端携带的还是旧的token所以都会执行失败,从而解决了并发修改数据的冲突问题。