006 - Redis 数据结构 - List类型


一、列表类型:List


  Redis 列表是简单的字符串列表,按照插入顺序排序,元素可以重复。你可以添加一个元素到列表的头部(左边)或者尾部(右边),无论是头或者尾效率都极高,但是如果对中间元素进行操作,那效率会大大降低了。

keyvalue
address北京 广州 上海 深圳

  列表类型的数据操作总的思想是通过 key 和下标操作 value,key 是数据标识,下标是数据在列表中的位置,value 是我们存储的数据。

一、List 数据的操作命令


1.lpush key value [value…]

功能:将一个或多个值 value 插入到列表 key 的最左边(表头),各个value值依次插入到表头位置;
返回值:插入之后的列表的长度;

127.0.0.1:6379> lpush score 95 96 97 99 95
(integer) 5

2.rpush key value [value…]

功能:将一个或多个值 value 插入到列表 key 的最右边(表尾),各个 value 值按依次插入到表尾;
返回值:插入之后的列表的长度;

127.0.0.1:6379> rpush score 95 96 97 99 95
(integer) 5

3.lrange key startIndex endIndex

功能:获取列表 key 中指定下标区间内的元素,下标从0开始,到列表长度-1;
   下标也可以是负数,表示列表从后往前取,-1表示倒数第一个元素,-2表示倒数第二个元素,以此类推,且 startIndex 和 endIndex 超出范围不会报错;
返回值:获取到的元素列表;

127.0.0.1:6379> lrange score 0 -1
1) "95"
2) "99"
3) "97"
4) "96"
5) "95"
127.0.0.1:6379> lrange score 0 2
1) "95"
2) "99"
3) "97"
127.0.0.1:6379> 

4.lpop key

功能:移除并返回列表 key 头部第一个元素,即列表左侧的第一个元素;
返回值:列表左侧第一个元素的值;
    列表 key 不存在,返回nil;

127.0.0.1:6379> keys *
1) "score"
127.0.0.1:6379> lrange score 0 -1
1) "90"
2) "95"
127.0.0.1:6379> lpop score
"90"
127.0.0.1:6379> lrange score 0 -1
1) "95"
127.0.0.1:6379> lpop score1
(nil)
127.0.0.1:6379> 

5.rpop key

功能:移除并返回列表 key 尾部第一个元素,即列表右侧的第一个元素;
返回值:列表右侧第一个元素的值;
    列表 key 不存在,返回nil;

127.0.0.1:6379> keys *
1) "score"
127.0.0.1:6379> lrange score 0 -1
1) "90"
2) "95"
127.0.0.1:6379>rpop score
"95"
127.0.0.1:6379> lrange score 0 -1
1) "90"
127.0.0.1:6379> rpop score1
(nil)
127.0.0.1:6379> 

6.lindex key index

功能:获取列表 key 中下标为指定 index 的元素,列表元素不删除,只是查询;
   0 表示列表的第一个元素,1 表示列表的第二个元素;
   index也可以负数的下标, -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推;
返回值:key存在时,返回指定元素的值;
    Key不存在时,返回nil;

127.0.0.1:6379> lrange score 0 -1
1) "94"
2) "92"
3) "90"
4) "95"
127.0.0.1:6379> lindex score 0
"94"
127.0.0.1:6379> lindex score -1
"95"

7.llen key

功能:获取列表 key 的长度;
返回值:列表的长度,key不存在返回0;

127.0.0.1:6379> lrange score 0 -1
1) "94"
2) "92"
3) "90"
4) "95"
127.0.0.1:6379> llen score 
(integer) 4

8.lrem key count value

功能:根据参数 count 的值,移除列表中 count 个与参数 value 相等的元素;
    count >0 ,从列表的左侧向右开始移除;
   count < 0 从列表的尾部开始移除;
   count = 0移除表中所有与 value 相等的值;
返回值:移除的元素个数;

127.0.0.1:6379> lpush zi a a b d a e a
(integer) 7
127.0.0.1:6379> lrem zi 2 a
(integer) 2
127.0.0.1:6379> lrange zi 0 -1
1) "e"
2) "d"
3) "b"
4) "a"
5) "a"

9.ltrim key startIndex endIndex

功能:截取key的指定下标区间的元素,并且赋值给key;
   下标从0开始,一直到列表长度-1;
   下标也可以是负数,表示列表从后往前取,-1表示倒数第一个元素,-2表示倒数第二个元素,以此类推;startIndex 和 endIndex 超出范围不会报错;
返回值:执行成功返回ok;

127.0.0.1:6379> lpush list 1 2 3 4 5
(integer) 5
127.0.0.1:6379> ltrim list 1 3
OK
127.0.0.1:6379> lrange list 0 -1
1) "4"
2) "3"
3) "2"

10.lset key index value

功能:将列表 key 下标为 index 的元素的值设置为 value;
返回值:设置成功返回ok ;
    key 不存在或者 index 超出范围返回错误信息;

127.0.0.1:6379> lpush list a b
(integer) 2
127.0.0.1:6379> lrange list 0 -1
1) "b"
2) "a"
127.0.0.1:6379> lset list 1 k
OK
127.0.0.1:6379> lrange list 0 -1
1) "b"
2) "k"

11.linsert key before/after pivot value

功能:将值 value 插入到列表 key 当中位于值 pivot 之前或之后的位置;
   key 不存在或者pivot不在列表中,不执行任何操作;

返回值:命令执行成功,返回新列表的长度;
    没有找到pivot返回 -1, key不存在返回0;

127.0.0.1:6379> linsert list before k c
(integer) 3
127.0.0.1:6379> lrange list 0 -1
1) "b"
2) "c"
3) "k"
127.0.0.1:6379> linsert list before p c
(integer) -1



写在最后

以上关于 Redis 中 List 类型数据结构的具体内容,后续如果有时间的话我也将持续更新,如果有错误或者是哪里不足的地方,欢迎各位大大提出宝贵的意见呀~

此外,想了解关于 Redis 的一些其他使用命令使用方法可以关注下方公众号,后台回复 “redis ”即可获取,期待着您的光临~

在这里插入图片描述


相关链接:

链接: 005 - Redis 数据结构 - String类型.
链接: 004 - Redis 基本命令.
链接: 003 - 解决 Windows 启动 Redis 服务器一闪而过问题.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值