BRPOPLPUSH
阻塞版的 RPOPLPUSH:弹出 source 的尾元素,压入 destination 的头部。
BRPOPLPUSH source destination timeout
复杂度
服务一次是 O(1)。
复杂度与兼容性是从 kevy 的实现里读出来的,不是抄 Redis 的文档。有几条确实不一样 —— 它们看起来像笔误,但不是。
与 Redis 的兼容性
有差异
有差异:跨 shard 的搬运不是原子的 —— 元素先在 source 所属 shard 上弹出,再到 destination 所属 shard 上压入,这两步之间它哪个 list 里都不在。用 {hashtag} 把两个 key 放到同一个 shard,才能走到 Redis 那样的原子路径。
另见
BLPOPBRPOPLINDEXLLENLMOVELPOPLPOSLPUSHLRANGELREMLSETLTRIMRPOPRPOPLPUSHRPUSH