Redis: Pattern

 15th March 2021 at 8:47am

Redis 的一些 pattern 和 use case。

队列和栈

普通的队列和栈LPUSH LPOP RPUSH RPOP

取用户最新的 N 篇帖子:按时间先后 RPUSH,用 LRANGE 取。

保持列表为 N 大小RPUSH 后用 LTRIM

阻塞读任务队列BRPOP 等待 list 有元素 push 进来。

流水线:把元素从一个队列移除,再加到另外一个队列;使用 LMOVE BLMOVE,参考 这里

循环队列:使用 LMOVE BLMOVE,参考 这里

存储用户相关的 K-V

使用 hash:

hmset user:1000 username antirez birthyear 1977 verified 1

表达包含关系

用 set 表达包含关系。

Set 中的 SPOP SRANDMEMBER 随机 pop 或返回集合中的元素,可以用于 发牌

Set 可做各类集合操作,如 union。

排行榜

Sorted set 可以用来实现排行榜。每个元素被加入时可以指定一个 score。ZRANGE ZREVRANGE 可以按 score 排名。ZRANK 可以给出某一元素的排名。