redis 的 LPOP 能保证唯一性(原子性)吗?

2017-09-14 19:57:58 +08:00
 imherer
假如多个程序(进程)同时操作同一个 list,能保证不产生幻读吗?(不知道这里用幻读这个词准不准备)
6313 次点击
所在节点    程序员
7 条回复
codingadog
2017-09-14 20:09:50 +08:00
redis 是单线程的,所以不会(我觉得
flynnX
2017-09-14 20:24:32 +08:00
多个进程同时操作也是分先后的,Redis 只能一次处理一个命令,不会造成不一致的情况
imherer
2017-09-14 20:25:31 +08:00
@flynnX 也就是说多个进程同时 pop 同一个 list 的时候不会取到重复的数据?
flynnX
2017-09-14 20:27:51 +08:00
https://redis.io/commands/rpoplpush 可以使用这个命令

> Atomically returns and removes the last element (tail) of the list stored at source, and pushes the element at the first element (head) of the list stored at destination.
flynnX
2017-09-14 20:30:53 +08:00
@flynnX 忽略这条

不会读到重复的数据的
nooper
2017-09-14 20:54:08 +08:00
transactions 添加 watch
JingKeWu
2017-09-15 10:07:02 +08:00
用 lua 我们也是用 lua 来保证原子性 eval 函数

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/390763

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX