目录
一.list类型的介绍与基本操作
1.list类型
数据进入存储空间的顺序进行区分.
进入顺序
底层使用双向链表存储结构实现
2.数组,链表,双向链表的概念
查询快,插入慢
查询慢,插入快
单向链表:
双向链表:
如果来一个新的节点,相关的顺序:
list就是双向链表的结构
二.redis中list类型的存储结构
1.数据存储需求:存储多个数据,并对数据进行存储空间顺序进行区分
redis存储空间
双向链表有助于构建特殊业务
--------------------------------------
---------------------------------------
可以左进也可以右进
左进左出===栈
右进左出===队列
三.list类型数据基本操作
(左头右尾)
1.添加/修改数据
lpush key value1 value2 ... left左进
rpush key value1 value2 ... right右进
2.获取数据
lrange key start stop
lindex key index 查询第几个进入得,从索引0开始
LLEN
3.获取并移除数据
lpop key 获取并移除一个,左出
rpop key 获取并移除一个右出
例子:右进左出
lrange list 0 -1 展示全部信息
四.list类型数据扩展操作
1.规定时间内获取并移除数据
没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
元素所属的 key ,第二个元素是被弹出元素的值。
brpop key1 [key2] timeout 右取 假如在指定时间内没有任何元素被弹出,则返回一个 nil 和等待时长。
反之,返回一个含有两个元素的列表,第一个元素是被弹出元素所属的 key ,第二个元素是被弹出元素的值。
总结 :阻塞版本
取数据时可以等待 ,有数据便返回,没有数据时将在规定时间之外返回
五.list类型的业务场景使用(一)
业务场景1:
按点赞顺序点赞显示点赞好友信息
如果取消点赞,移除对应好友的信息
从中间取出数据
解决方案:
移除指定位置的数据
lrem key count value
key 队列名 count 移除几个 value删除哪个元素
redis应用具有操作先后顺序的数据控制
六.list实现业务场景(二)
(一).list类型数据操作注意事项
有限的,且均为String类型,最多2^32 -1个元素
索引的概念,但操作数据时,通常以队列的形式入队,出队的操作或以栈入栈出栈的操作
分页操作,通常第一页的信息来自于list.第二页以及更多信息通过数据库的形式加载
(二)业务场景
顺序进行展示,粉丝列表需要将最近关注的粉丝列在前面
时间顺序展示
统一顺序输出
ELK日志系统
redis应用于最新消息的展示
七. list类型常用的解决方案:
顺序特征对信息进行管理
队列模型解决多路信息汇总合并的问题
栈解决最新消息的问题