Redis学习(三)list

一、概述

    在Redis中,List类型是按照插入顺序排序的字符串链表。和数据结构中的普通链表一样,我们可以在其头部(left)和尾部(right)添加新的元素。在插入时,如果该键并不存在,Redis将为该键创建一个新的链表。与此相反,如果链表中所有的元素均被移除,那么该键也将会被从数据库中删除。List中可以包含的最大元素数量是4294967295。
      从元素插入和删除的效率视角来看,如果我们是在链表的两头插入或删除元素,这将会是非常高效的操作,即使链表中已经存储了百万条记录,该操作也可以在常量时间内完成。然而需要说明的是,如果元素插入或删除操作是作用于链表中间,那将会是非常低效的。 

二、list操作命令

    示例:lpush key val

    用法:向list的左侧(头部)插入一个值

    返回:执行 lpush命令后,列表的长度。

    示例:rpush key val

    用法:向list的右侧(尾部)插入一个值

    返回:执行 rpush命令后,列表的长度。

    示例:lpushhx key val

    用法:向list的左侧(头部)插入一个值,如果这个值不存在时,不会执行任何操作

    返回:执行 命令后,列表的长度。

    示例:rpushhx key val

    用法:向list的右侧(尾部)插入一个值,如果这个值不存在时,不会执行任何操作

    返回:执行 命令后,列表的长度。

    示例:lpop key

    用法:头部去除一个值,并返回这个值

    返回:存在就返回列表第一个值,不存在返回nil

    示例:rpop key

    用法:尾部去除一个值,并返回这个值

    返回:存在就返回列表最后一个值,不存在返回nil

    示例:rpop key

    用法:尾部去除一个值,并返回这个值

    返回:存在就返回列表最后一个值,不存在返回nil

    示例:llen key

    用法:返回列表的长度。 如果列表 key 不存在,则 key 被解释为一个空列表,返回 0 。 如果 key 不是列表类型,返回一个错误。

    返回:返回列表的长度

    示例:lrem key count val

    用法:移除列表中count个值尾val的元素

    返回:count大于0:从头开始搜索count个值为val的元素并移除

               count小于0:从尾开始搜索count个值为val的元素并移除

               count等于0:移除列表中所有值为val的元素

               最后返回移除的个数

    示例:lrange key start end

    用法:取出list中从start到end范围内的元素,区间以偏移量 START 和 END 指定。 其中 0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。

    返回:返回一个包含区间元素的列表

    示例:ltrim key start end

    用法:对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。

              下标 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最                 后一个元素, -2 表示列表的倒数第二个元素,以此类推。

    返回:操作成功返回OK

    示例:linsert  befort|after pivot val

    用法:用于在列表的元素前或者后插入元素。当指定元素不存在于列表中时,不执行任何操作。

               当列表不存在时,被视为空列表,不执行任何操作。

               如果 key 不是列表类型,返回一个错误。

    返回:操作成功返回列表的长度。列表不存在返回0,val不存在返回-1

    示例:L/Rpoppush sourcekey destkey

    用法:用于移除列表的最后一个元素,并将该元素添加到另一个列表并返回。

    返回:被弹出的元素值

127.0.0.1:6379> lpush message update clean full ctrl_switch close   一次添加多个val到list中
(integer) 5
127.0.0.1:6379> lrange message 0 -1                  查询一个范围内的值,返回了一个列表
1) "close"
2) "ctrl_switch"
3) "full"
4) "clean"
5) "update"
127.0.0.1:6379> linsert message after full change   向指定的val之后插入一个值
(integer) 6
127.0.0.1:6379> lrange message 0 -1                    在full的after之后存在了change这个值
1) "close"
2) "ctrl_switch"
3) "full"
4) "change"
5) "clean"
6) "update"
127.0.0.1:6379> 
发布了22 篇原创文章 · 获赞 9 · 访问量 8817

猜你喜欢

转载自blog.csdn.net/ljm_c_bok/article/details/104845889