前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis 数据结构之list类型

Redis 数据结构之list类型

作者头像
Devops海洋的渔夫
发布2019-08-20 14:37:23
3960
发布2019-08-20 14:37:23
举报
文章被收录于专栏:Devops专栏Devops专栏

list类型

  • 列表的元素类型为string
  • 按照插⼊顺序排序

增加

在左侧插⼊数据

lpush key value1 value2 ...

  • 例1:从键为'a1'的列表左侧加⼊数据a 、 b 、c

lpush a1 a b c

代码语言:javascript
复制
127.0.0.1:6379[1]> LPUSH a1 a b c
(integer) 3
127.0.0.1:6379[1]> lpush a1 a b c
(integer) 6
127.0.0.1:6379[1]> lpush a1 a b c
(integer) 9
127.0.0.1:6379[1]> lrange a1 0 3
1) "c"
2) "b"
3) "a"
4) "c"
127.0.0.1:6379[1]> lrange a1 0 6
1) "c"
2) "b"
3) "a"
4) "c"
5) "b"
6) "a"
7) "c"
127.0.0.1:6379[1]> lrange a1 0 9
1) "c"
2) "b"
3) "a"
4) "c"
5) "b"
6) "a"
7) "c"
8) "b"
9) "a"
127.0.0.1:6379[1]> 

在右侧插⼊数据

rpush key value1 value2 ...

  • 例2:从键为'a1'的列表右侧加⼊数据0 1

rpush a1 0 1

代码语言:javascript
复制
127.0.0.1:6379[1]> rpush a1 0 1
(integer) 11
127.0.0.1:6379[1]> lrange a1 0 20
 1) "c"
 2) "b"
 3) "a"
 4) "c"
 5) "b"
 6) "a"
 7) "c"
 8) "b"
 9) "a"
10) "0"
11) "1"
127.0.0.1:6379[1]> 

在指定元素的前或后插⼊新元素

linsert key before或after 现有元素 新元素

  • 例3:在键为'a1'的列表中元素'b'前加⼊'3'

linsert a1 before b 3

代码语言:javascript
复制
127.0.0.1:6379[1]> linsert a1 before b 3
(integer) 12
127.0.0.1:6379[1]> lrange a1 0 20
 1) "c"
 2) "3"  # 可以发现只会在第一个出现的b前面插入3
 3) "b"
 4) "a"
 5) "c"
 6) "b" # 第二个以及之后的b不会插入3
 7) "a"
 8) "c"
 9) "b"
10) "a"
11) "0"
12) "1"
127.0.0.1:6379[1]> 
# 再执行一个从b插入数字3
127.0.0.1:6379[1]> linsert a1 before b 3
(integer) 13
127.0.0.1:6379[1]> lrange a1 0 20
 1) "c"
 2) "3"
 3) "3" # 发现第二次插入也是在第一个b中执行,后面的b是不会插入3的
 4) "b"
 5) "a"
 6) "c"
 7) "b"
 8) "a"
 9) "c"
10) "b"
11) "a"
12) "0"
13) "1"
127.0.0.1:6379[1]> 

获取

  • 返回列表⾥指定范围内的元素
    • start、stop为元素的下标索引
    • 索引从左侧开始,第⼀个元素为0
    • 索引可以是负数,表示从尾部开始计数,如-1表示最后⼀个元素

lrange key start stop

获取list所有元素

  • 例4:获取键为'a1'的列表所有元素

lrange a1 0 -1

代码语言:javascript
复制
127.0.0.1:6379[1]> lrange a1 0 -1
 1) "c"
 2) "3"
 3) "3"
 4) "b"
 5) "a"
 6) "c"
 7) "b"
 8) "a"
 9) "c"
10) "b"
11) "a"
12) "0"
13) "1"
127.0.0.1:6379[1]> 

设置指定索引位置的元素值

  • 索引从左侧开始,第⼀个元素为0
  • 索引可以是负数,表示尾部开始计数,如-1表示最后⼀个元素

lset key index value

  • 例5:修改键为'a1'的列表中下标为1的元素值为'z'

lset a 1 z

代码语言:javascript
复制
127.0.0.1:6379[1]> lset a1 1 z
OK
127.0.0.1:6379[1]> lrange a1 0 -1
 1) "c"
 2) "z" # 下标为1的位置已经改为z
 3) "3"
 4) "b"
 5) "a"
 6) "c"
 7) "b"
 8) "a"
 9) "c"
10) "b"
11) "a"
12) "0"
13) "1"
127.0.0.1:6379[1]> 

删除

删除指定元素

将列表中前count次出现的值为value的元素移除

  • count > 0: 从头往尾移除
  • count < 0: 从尾往头移除
  • count = 0: 移除所有

lrem key count value

  • 例6.1:向列表'a2'中加⼊元素'a'、'b'、'a'、'b'、'a'、'b'

lpush a2 a b a b a b

代码语言:javascript
复制
127.0.0.1:6379[1]> lpush a2 a b a b a b
(integer) 6
127.0.0.1:6379[1]> lrange a2 0 -1
1) "b"
2) "a"
3) "b"
4) "a"
5) "b"
6) "a"
127.0.0.1:6379[1]> 
  • 例6.2:从'a2'列表右侧开始删除2个'b'

lrem a2 -2 b

代码语言:javascript
复制
# 删除之前的数据
127.0.0.1:6379[1]> lrange a2 0 -1
1) "b"
2) "a"
3) "b"
4) "a"
5) "b"
6) "a"
# 从尾部开始删除两个b
127.0.0.1:6379[1]> LREM a2 -2 b
(integer) 2
# 删除后的数据
127.0.0.1:6379[1]> lrange a2 0 -1
1) "b"
2) "a"
3) "a"
4) "a"
127.0.0.1:6379[1]> 
  • 例6.3:查看列表'a2'的所有元素
代码语言:javascript
复制
127.0.0.1:6379[1]> lrange a2 0 -1
1) "b"
2) "a"
3) "a"
4) "a"
127.0.0.1:6379[1]> lrem a2 0 b
(integer) 1
127.0.0.1:6379[1]> lrem a2 0 a
(integer) 3
127.0.0.1:6379[1]> lrange a2 0 -1
(empty list or set)
127.0.0.1:6379[1]> 
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.08.19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • list类型
  • 增加
    • 在左侧插⼊数据
      • 在右侧插⼊数据
        • 在指定元素的前或后插⼊新元素
        • 获取
          • 获取list所有元素
            • 设置指定索引位置的元素值
            • 删除
              • 删除指定元素
              相关产品与服务
              云数据库 Redis
              腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档