Memcached的使用与CAS命令

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ZX714311728/article/details/72027009
Memcached的前台启动
  1. memcached -p 11211 -m 64m -vv -u root


作为daemon后台启动
  1. memcached -p 11211 -m 64m -vv -u root -d
 -u选项只有在root用户下才使用


连接Memcached服务
    memcached的服务器客户端通信不使用复的XML等格式,而使用简单的基于本行的协议。因此,通过telnet也能在memcached上保存数据、取得数据。
  1. telnet 服务器IP 端口号
如:
  1. [root@localhost ~]# telnet 127.0.0.1 11211
  2. Trying 127.0.0.1...
  3. <36 new auto-negotiating client connection
  4. Connected to 127.0.0.1.
  5. Escape character is '^]'.
  6. set zhou 0 100 3
  7. 36: Client using the ascii protocol
  8. <36 set zhou 0 100 3
  9. xin
  10. >36 STORED
  11. STORED
  12. get zhou
  13. <36 get zhou
  14. >36 sending key zhou
  15. >36 END
  16. VALUE zhou 0 3
  17. xin
  18. END

Memcached的操作命令
存储:set, add, replace, incr, decr, append, prepend, cas
删除:delete, flush_all
查找:get, gets
统计:stats, stats items, stats slabs, stats sizes
    
Memcached的cas(Check-And-Set 或 Compare-And-Swap) 命令
假设有下列情形:
第一步,A取出数据对象X; 
第二步,B取出数据对象X; 
第三步,B修改数据对象X,并将其放入缓存; 
第四步,A修改数据对象X,并将其放入缓存。 
             则,我们可以发现,第四步中会产生数据写入冲突。因为B写的数据被A改了,而B并不知道这一点。所以应该禁止这种情况发生。 

如果采用了CAS协议,则变成了下列情形:
第一步,A取出数据对象X,并获取到CAS-ID; 
第二步,B取出数据对象X,并获取到CAS-ID; 
第三步,B修改数据对象X,在写入缓存前,检查CAS-ID与缓存空间中该数据的CAS-ID是否一致。结果是“一致”,就将修                改写入缓存并更新CAS-ID为CAS-ID1。 
第四步,A修改数据对象X,在写入缓存前,检查CAS-ID与缓存空间中该数据的CAS-ID1是否一致。结果是“不一致”,则                拒绝写入,返回存储失败。 

所以,CAS命令仅在当前客户端最后一次取值后到修改该key时,这中间的时间段内该key没有被其他客户端修改的情况下, 才能够将值写入。


















阅读更多

没有更多推荐了,返回首页