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 中的 

唯一标识将会改变您的写操作就会失败 

posted @ 2020-07-14 16:51  咔啡  阅读(199)  评论(0编辑  收藏  举报