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
可以给出某一元素的排名。