`
qianshangding
  • 浏览: 124437 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Memcached之原子性(6)

 
阅读更多

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)


分享到:
评论

相关推荐

    redis是一个key-value存储系统 和Memcached类似,它支持存储的value类型相对更多

    这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是...

    Java面试宝典(数据库篇).docx

    (3) 支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行 (4) 丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除 2. redis相比memcached有哪些优势? (1) ...

    Redis实战《红丸》.pdf

    add/remove 及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础 上,Redis 支持各种不同方式的排序。与memcached 一样,为了保证效率,数据都是缓存在 内存中。区别的是Redis 会周期性的把更新...

    cpp11-memcached:一个简单的Memcached服务器示例,该服务器仅处理获取和设置请求

    #cpp11-memcached这是一个玩具memcached服务器,仅支持设置和获取请求,这是为了编写更... ### CAS字段CAS字段用于表示原子性。 根据第4.3节“设置,添加,替换”: If the Data Version Check (CAS) is nonzero, the

    php中用memcached实现页面防刷新功能

    2、以memcached的方法increment()来自增记录用户访问次数,increment()是原子性增加,准确。 3、设置set()时指定过期时间为60s,这样就统计一分钟的访问次数。 于是写了个函数放在项目的初始化文件中调用,函数内容...

    jedis-2.1.0.jar

    这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是...

    redis笔记以及面试题.md

    这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是...

    《Redis实战》红丸出品

    add/remove 及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础 上,Redis 支持各种不同方式的排序。与 memcached 一样,为了保证效率,数据都是缓存在 内存中。区别的是 Redis 会周期性的把...

    Redis实战电子书 高清带书签 中文完整版.pdf(《红丸出品》)

    add/remove 及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础 上, Redis 支持各种不同方式的排序。与 memcached 一样,为了保证效率,数据都是缓存在 内存中。区别的是 Redis 会周期性的把...

    Redis-x64-5.0.9.msi

    这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是...

    《Redis实战》

    这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,Redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是...

    redis 缓存技术学习笔记

    这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是...

    Redis实战 中文.pdf

    add/remove 及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础 上,Redis 支持各种不同方式的排序。与 memcached 一样,为了保证效率,数据都是缓存在 内存中。区别的是 Redis 会周期性的把...

    Redis实战开发文档

    这些数据类型都支持 push/pop、add/remove 及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上, Redis 支持各种不同方式的排序。与 memcached 一样,为了保证效率,数据都是缓存在内存中。...

    Redis入门基础

    这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是...

    Redis实战,详细讲解redis的使用方式

    这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,Redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是...

    redisForWindows安装包

    这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是...

    Redis可视化工具安装包(redis管理视图)

    这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是...

    Redis7.0.11版本安装包

    这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是...

Global site tag (gtag.js) - Google Analytics