前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis(五):List集合数据类型详解

Redis(五):List集合数据类型详解

作者头像
栗筝i
发布2022-12-01 08:44:01
4300
发布2022-12-01 08:44:01
举报
文章被收录于专栏:迁移内容

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)

一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。

实例:

代码语言:javascript
复制
redis 127.0.0.1:6379> LPUSH runoobkey redis
(integer) 1
redis 127.0.0.1:6379> LPUSH runoobkey mongodb
(integer) 2
redis 127.0.0.1:6379> LPUSH runoobkey mysql
(integer) 3
redis 127.0.0.1:6379> LRANGE runoobkey 0 10

1) "mysql"
2) "mongodb"
3) "redis"

在Redis中我们可以使List成为,栈、队列、阻塞队列!

1、List常用命令

1.1、LPUSH、LRANGE、RPUSH

代码语言:javascript
复制
127.0.0.1:6379> LPUSH list v1	//将一个或者多个的值插入到列表头部(左)
(integer) 1
127.0.0.1:6379> LPUSH list v2
(integer) 2
127.0.0.1:6379> LPUSH list v3
(integer) 3
127.0.0.1:6379> RPUSH list v4r  //将一个或者多个的值插入到列表尾部(右)
(integer) 4
127.0.0.1:6379> LRANGE list 0 -1  //通过区间获取list的值
1) "v3"
2) "v2"
3) "v1"
4) "v4r"//可以看出这个顺序是:v3 v2 v1 v4r
127.0.0.1:6379> 

1.2、LPOP、RPOP

代码语言:javascript
复制
127.0.0.1:6379> LPOP list	//移除list第一个元素(左)
"v3"
127.0.0.1:6379> rPOP list	//移除list最后一个元素(右)
"v4r"
127.0.0.1:6379> LRANGE list 0 -1
1) "v2"
2) "v1"
127.0.0.1:6379> 

1.3、Lindex

代码语言:javascript
复制
127.0.0.1:6379> LINDEX list 0	//通过下标获得list的某一个值
"v2"
127.0.0.1:6379> LINDEX list 1
"v1"

1.4、Llen

代码语言:javascript
复制
127.0.0.1:6379> LLEN list	//获取list长度
(integer) 2

1.5、LREM

代码语言:javascript
复制
127.0.0.1:6379> LRANGE list 0 -1
1) "v4"
2) "v4"
3) "v3"
4) "v2"
5) "v1"
127.0.0.1:6379> LREM list 2 v4	//移除list中指定个数(2)的值(v4)
(integer) 2
127.0.0.1:6379> LRANGE list 0 -1
1) "v3"
2) "v2"
3) "v1"
127.0.0.1:6379> 

1.6、trim

代码语言:javascript
复制
127.0.0.1:6379> LRANGE list 0 -1
1) "v4"
2) "v3"
3) "v2"
4) "v1"
127.0.0.1:6379> LTRIM list 1 2	//将list在指定位置截取
OK
127.0.0.1:6379> LRANGE list 0 -1
1) "v3"
2) "v2"
127.0.0.1:6379> 

1.7、组合命令rpoplpush

代码语言:javascript
复制
127.0.0.1:6379> LRANGE list 0 -1
1) "v4"
2) "v3"
3) "v2"
4) "v1"
127.0.0.1:6379> rpoplpush list list2	//移除列表中最后一个元素到新的列表中
"v1"
127.0.0.1:6379> LRANGE list 0 -1
1) "v4"
2) "v3"
3) "v2"
127.0.0.1:6379> LRANGE list2 0 -1
1) "v1"
127.0.0.1:6379> 

1.8、lset

代码语言:javascript
复制
127.0.0.1:6379> EXISTS list2	//查询列表是否存在
(integer) 1
127.0.0.1:6379> LRANGE list2 0 -1
1) "v1"
127.0.0.1:6379> LSET list2 0 vv	//替换列表指定位置的值,如过不存在会报错
OK
127.0.0.1:6379> LRANGE list2 0 -1
1) "vv"
127.0.0.1:6379> 

1.9、linset

代码语言:javascript
复制
127.0.0.1:6379> LRANGE list 0 -1
1) "v4"
2) "v3"
3) "v2"
127.0.0.1:6379> LINSERT list before v2 vv	//将某个值插入列表指定值的前面
(integer) 4
127.0.0.1:6379> LINSERT list after v2 vv2	//将某个值插入列表指定值的后面
(integer) 5
127.0.0.1:6379> LRANGE list 0 -1
1) "v4"
2) "v3"
3) "vv"
4) "v2"
5) "vv2"
127.0.0.1:6379> 

2、小结

  • List可以被想象为一个链表,可以befor node after ,left,right进行插入;
  • 如果key不存在,创建新链表,如果存在,新增内容;
  • 如果移除了所有值,则代表不存在;
  • 在两边插入或改动,效率最高,中间元素效率偏低;
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-06-12,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、List常用命令
  • 2、小结
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档