zoukankan      html  css  js  c++  java
  • Redis的列表(List)类型

            列表类型(List)可以存储一个有序的字符串列表,常用的操作就是向列表两端添加元素,或者获取列表中某一个片段。

            列表类型内部使用双向链表(double linked list)实现的,所以向列表两端添加或删除元素的速度非常快,越是接近两端的元素就越快,但是,也有弊端,就是通过索引访问元素的速度比较慢。

            因为使用了双向链表实现存储的,所以在命令上也有两种:L和R。“L”代表左,“R”代表右。

    一、常用命令

    1、向列表两端添加元素

    LPUSH key value1 [value2 ... ]
    RPUSH key value1 [value2 ... ]

    第一行命令向key为numbers的列表添加一个“1”,然后再添加了两个元素,如下图所示:

     

    由于使用lpush,即向左添加元素到队列,所以第二条命令一次性添加两个元素,会先将2在列表的左边添加进去,接着把3从左边添加进去,所以会看到上图的效果,lrange命令也进行了验证。(lrang命令是用于获得列表片段)

    接着从右边添加元素:

    lpush命令和rpush命令的用法是一样的,前者从左添加,后者从右添加。

    2、弹出元素

    lpop key
    rpop key

    redis的列表类型有点像栈,上面第一条命令表示从左边弹出一位元素,即“3”,第二条命令表示从右弹出一位元素,即“-1”,再次查看numbers列表的元素,参数依然是0和4(0和4表示索引),但返回只有2,1,0.说明pop这个命令会直接将列表的元素从列表中“删除”。

    3、获取列表片段

    lrange key start stop

    start和stop表示索引,列表的起始索引值为0,lrange命令也支持负索引,如:

    上图的-3表示从右边开始第三位元素,-1表示从右边开始的第一位,如此类推。

    4、删除列表中指定的值

    lrem key count value

    count:

    • 当count > 0时,lrem命令会从左边开始删除前count个值为value的元素;
    • 当count < 0 时,lrem命令会从右边开始删除前 |count| 个值为value的元素;
    • 当count = 0时,lrem命令会删除所有值为value的元素。

    上图时从右边删除前两个值为2元素。

    二、实际应用场景

    1、存储文章ID列表

            当每次发布新文章时,就可以使用lpush命令将文章ID加入到列表中,这样显示文章列表时,就会根据加入文章加入列表的顺序进行倒序显示,即最新发布的文章排在最前面。

            用列表存储文章ID时,要注意两个问题:

    文章发布时间不易修改;
    当文章数量较多时,访问中间文章的速度比较慢,前面也介绍过,列表类型存储是使用双向链表实现的。
    2、存储评论列表

            将最新的评论放在列表的左边。

  • 相关阅读:
    dbcp 详细配置
    InetAddress
    Qrcode 二维码
    左值右值分析
    javaweb reponse 写出文件
    ehcache 在集群环境下 出现 Cause was not due to an IOException or NotBoundException
    lo4j 日志级别
    log4j xml配置
    cron 表达式
    RabbitMQ简介
  • 原文地址:https://www.cnblogs.com/SysoCjs/p/10327149.html
Copyright © 2011-2022 走看看