5.2.3Redis的数据类型 --list

总目录:https://blog.csdn.net/qq_41106844/article/details/105553392

数据库子目录:https://blog.csdn.net/qq_41106844/article/details/105553331

 

list

string类型适合存储整体有关联的数据,hash类型适合存用来交互的数据,所有存储量就受到了限制。那么有没有一种类型可以存储大量的数据的同时也很灵活呢,这就是list类型。

list类型

  • 数据存储需求:存储多个数据,并对数据进入空间的顺序进行区分
  • 需要的存储结构:一个存储空间,保存多个数据。且通过数据可以体现进入顺序
  • list类型:保存多个数据,底层通过双向链表实现。

基础操作

-添加/修改数据
因为list类型是双向链表实现的,所以就有了左侧写入和右侧写入的区别。

lpush key value1 value2...
rpush key value1 value2...

 
20155953-3652e4b086548db8.png
添加
  • 获取数据
    同样,redis的list和大部分编程语言的list一样,也是有索引的。

lrange key start top
lindex key index
llen key

 
20155953-4af9f81f613ee894.png
查找1

 

这样就能看出,左侧插入与右侧插入的不同了,左侧插入取出后的顺序会颠倒。

 

 
20155953-9d529717930a161d.png
查找2

-删除数据(有返回值)

lpop key
rpop key

 
20155953-f19b804edc8fcc51.png
删除

 

删除操作会删除链表中最后一个数据。

 

扩展操作

  • 规定时间内获取并移除数据

blpop key1 [ksy2] timeout
brpop key1 [key2] timeout

我们先pop一个不存在的value,过了我们设置的5s后,报错,中止操作。
然后我们再pop一下,但是给他设置一个稍微长一些的时间,然后再另一个命令行内push进去一个值,这样本来的命令行就会取到value,返回取到的值并删除。

 
20155953-ffd56f4198663910.png
示意
  • 移除指定数量的指定数据

lrem key count value

 
20155953-6dca6ae7193c435a.png
示意

 

 
20155953-5bc4aef1f06817ca.png
其他使用方式

 

注意事项

  • list保存的数据类型都是string数据类型,容量最大是232-1
  • list具有索引的概念,但是操作时是以队列的形式进行出队入队。
  • list可以对数据进行分页操作,通常第一页数据以list形式展开,以后以数据库形式展开。

应用场景1

日志消息队列
公司内会有很多集群,每时每刻在产生格式不同的各类日志,但是突然集群宕机了,运维就需要去阅读日志,找出错误。
一般情况下日志都在各自集群内保存着,但是这样的话阅读起来阻碍很多,所以就需要一个统一的东西来保存所有的日志。

解决方案

  • 依赖list的顺序特征
  • 使用队列模式解决多路信息汇总合并的问题
  • 使用栈模型结局最新消息的问题
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寒 暄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值