美文网首页
5.2.3Redis的数据类型 --list

5.2.3Redis的数据类型 --list

作者: 寒暄_HX | 来源:发表于2020-03-17 20:11 被阅读0次

    总目录:https://www.jianshu.com/p/e406a9bc93a9

    数据库 - 子目录:https://www.jianshu.com/p/4499e57a5604

    list

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

    list类型

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

    基础操作

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

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

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

    lrange key start top
    lindex key index
    llen key

    查找1

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

    查找2

    -删除数据(有返回值)

    lpop key
    rpop key

    删除

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

    扩展操作

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

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

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

    示意
    • 移除指定数量的指定数据

    lrem key count value

    示意
    其他使用方式

    注意事项

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

    应用场景1

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

    解决方案

    • 依赖list的顺序特征
    • 使用队列模式解决多路信息汇总合并的问题
    • 使用栈模型结局最新消息的问题

    相关文章

      网友评论

          本文标题:5.2.3Redis的数据类型 --list

          本文链接:https://www.haomeiwen.com/subject/unwoehtx.html