memcached是原子的吗

所有的被发送到memcached 的单个命令是完全原子的。如果您针对同一份数据同时发送了一个set 命令和一个get 命令,它们不会影响对方。它们将被串行化、先后执行。即使在多线程模式,所有的命令都是原子的,除非程序有bug:)

命令序列不是原子的。如果您通过get 命令获取了一个item,修改了它, 然后想把它set 回memcached,我们不保证这个item 没有被其他进程( process,未必是操作系统中的进程)操作过。在并发的情况下,您也可能覆写了一个被其他进程set 的item。

memcached 1.2.5 以及更高版本,提供了gets 和cas 命令,它们可以解决上面的问题。如果您使用gets 命令查询某个key 的item,memcached 会给您返回该item 当前值的唯一标识。如果您覆写了这个item 并想把它写回到memcached中,您可以通过cas 命令把那个唯一标识一起发送给memcached。如果该item存放在memcached 中的唯一标识与您提供的一致, 您的写操作将会成功。如果另一个进程在这期间也修改了这个item,那么该item 存放在memcached 中的唯一标识将会改变,您的写操作就会失败

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值