redis的List数据结构--redis(5)

redis的List就是一个特殊的链表
 
 
 
比较基础的操作有
LPUSH:在链表的最左侧(表头)插入元素,如果表头存在元素,那么原来的元素就会被挤到表头的下一个位置(左边)
RPUSH:在链表的最右侧(表尾)插入元素,如果表尾存在元素,那么原来的元素就会被挤到表尾的上一个位置(右边)
LPOP:取出表头元素
RPOP:取出表尾元素
 
BRPOP:这个操作一般用于阻塞队列中,使用这个命令后redis会监听链表,如果链表中有元素,那么会将表尾元素取走,如果没有,那么redis会继续循环监听链表。
 
有了这几个基础操作就可以模仿栈、队列、阻塞队列的数据结构和操作:
 
栈:LPUSH+FPOP:从表头插入元素,表头取元素(先进后出)
队列:LPUSH+RPOP:从表头插入元素,从表尾取元素(先进先出)
阻塞队列:LPUSH+BRPOP:从表头插入元素,循环监听链表,取表尾元素。
 
互联网使用场景:
微博,关注了某个大V,当大V发送了一条消息,先将这条消息缓存。然后在关注了这个大V的用户的消息队列中使用PUSH添加到用户的消息队列中,当用户刷新消息时,就加载这条信息。

猜你喜欢

转载自www.cnblogs.com/lockXie/p/11784301.html
今日推荐