Memcached之原子性(6)
来源:互联网 发布:新手怎么装修淘宝店铺 编辑:程序博客网 时间:2024/04/29 16:07
Memcached所有单个命令都是原子性的。
如果针对同一个Item发送一个set命令和一个get命令,这两个命令之间是不会有影响的。即使是在多线程环境下,所有的命令也都是原子性的,但是我们要注意单个命令是原子性的,但是命令和命令之间的序列不是原子性的。例如使用get命令获取一个Item,然后通过set命令修改该Item,这个时候Memcached是无法保证该Item的值或其他属性不会被其他的进程修改的。同理,在并发环境下,当前线程也可能会修改其他进程set的Item。
那么有没有办法做到原子性呢?
答案是肯定的(不然写这个文章干嘛^-^),Memcached 1.2.5以及更高版本提供了gets和cas命令这两个命令,它们可以解决上面描述的问题。
第一步:通过gets命令查询某个Item的话,Memcached会返回一个该Item的当前值的唯一标示。
第二步:通过cas命令更新的值和唯一标示一起发送到Memcached。如果当前Item的唯一标示和cas提供的唯一标示一样,那么写操作就成功;如果其他线程修改了Item,那么该唯一标示就改变了,那么写操作就失败。
gets和cas命令如何使用,请查看:Memcached之存储命令(2)
0 0
- Memcached之原子性(6)
- memcached 原子性操作 CAS模式
- java之原子性
- 操作系统之原子性
- memcached原子加法
- windows 多线程之原子性
- java并发之原子性
- Java并发之原子性
- 程序之原子性、可见性、有序性
- 高并发服务器学习之原子性
- 多线程之原子性对比demo
- JVM之线程安全、原子性实现
- 多线程并发之原子性(六)
- 数据库特性之原子性和一致性
- 原子性
- 原子性
- 原子性
- 原子性
- mac sublime3+xdebug+firefox调试环境的搭建
- 浅谈cookie和session
- 在ARC下引用第三方库等使用MRC 设置 -fno-objc-arc无效
- c++-------------数组
- [华为机试题]简单错误记录
- Memcached之原子性(6)
- ubuntu使用virt 创建虚拟机参数代码
- 【组合数学】【高精度】【prufer数列】【HNOI 2008】【bzoj 1005】明明的烦恼
- olrconfig.xml 说明
- Linux vi编辑器命令详解
- 如何学好循环
- JS中容易忽略的、毫无技术性、最不容易发现的错误
- 基于Netty5.0入门案例一之NettyServer
- HashMap和Hashtable的区别