LPUSH key value [value........] //将一个或者多个value插入到key列表的表头(最左边)
RPUSH key value [value........] //将一个或者多个value插入到key列表的表尾(最右边)
LPOP key //移除并返回key列表的头元素
RPOP key //移除并返回key列表的尾元素
LRANGE key start stop //返回key列表指定区间的元素
BLPOP key [key] timeout //从key列表的表头弹出一个元素,若列表中没有元素,阻塞等待
timeout秒,如果timeout等于0,一直阻塞等待
LRPOP key [key.........] timeout //从key列表的表尾弹出一个元素,若列表中没有元素,阻塞等待
timeout秒,如果timeout等于0,一直阻塞等待
用redis的一些组合可以实现常用额的数据结构
Stack(栈)=LPUSH+LPOP ——>FIFO
Queue(队列) =LPUSH+RPOP
Blocking MQ(阻塞队列)=LPUSH+BRPOP
我的关注列表 wechat:official:account:6787: focusList
假设何炅微信公众号key:wechat:official:account:list:1000234
假设撒贝宁微信公众号key:wechat:official:account:list:1000258
假设周星驰微信公众号key:wechat:official:account:list:1000258
设计思路,我们将每个公众号的消息都已list列表来存储
然后我们自己关注的人也用list列表来存储。
要实现订阅给公众号列表
首先我们需要获取关注列表
LRANGE wechat:official:account:6787: focusList 0 -1 (获取关注列表)
获取关注列表后,我们列表中的每个对象进行遍历
LRANGE key:wechat:official:account:list:1000234 0 20 (获取关注用户最近的20条)
点击查看历史文章 LRANGE key:wechat:official:account:list:1000234 0 -1 (获取关注用户所有文章)
然后将所有的List封装到一个List集合,转换json返回前台。
用户写文章: LPUSH wechat:official:account:6787:654647 value(json字符串)
用户写文章: LPUSH wechat:official:account:6787:654647 value(json字符串)