首页 > 数据库 >【Redis】Redis 列表 List 操作 ( 查询操作 | 根据下标获取元素 | 获取列表长度 | 增操作 | 插入值 | 删操作 | 移除值 | 修改操作 | 设置列表指定索引的值 )

【Redis】Redis 列表 List 操作 ( 查询操作 | 根据下标获取元素 | 获取列表长度 | 增操作 | 插入值 | 删操作 | 移除值 | 修改操作 | 设置列表指定索引的值 )

时间:2023-02-18 22:32:01浏览次数:43  
标签:127.0 name 0.1 Redis 列表 6379 lrange 操作


文章目录

  • ​​一、List 列表简介​​
  • ​​二、查询操作​​
  • ​​1、根据下标获取元素​​
  • ​​2、获取指定下标索引的元素​​
  • ​​3、获取列表长度​​
  • ​​三、增操作​​
  • ​​1、插入值​​
  • ​​2、在指定元素前后插入值​​
  • ​​四、删操作​​
  • ​​1、移除值​​
  • ​​2、删除列表指定个数的指定值​​
  • ​​五、修改操作​​
  • ​​1、多列表操作​​
  • ​​2、设置列表指定索引的值​​






一、List 列表简介



在 Redis 中 , 通过 一个 键 Key , 可以 存储多个值 , 这些值存放在一个 List 列表中 ;

List 列表 是 字符串列表 , 元素类型是 字符串 ;

Redis 中的 List 列表 本质是 双向链表 , 可以将 字符串元素 添加到 列表的头部 或 尾部 ;

列表 对于 两端 的 操作 性能较高 , 对于 通过 索引小标 查询 元素的 性能较低 ;

  • 插入元素 效率较高 ;
  • 查询元素 效率较低 ;


Redis 中的 List 列表 , 底层由 快速链表 QuickList

  • 如果列表中 元素个数较少 , 则会被分配一块 连续的内存结构 , 该结构是 ZipList 压缩列表 ;
  • 如果列表中 元素个数较大 , 无法分配连续的内存空间 , 列表中只存储指针信息 , 指向元素的实际内存空间 ;
  • 后一个元素的 指针 ;

快速链表 是 链表 和 压缩列表






二、查询操作




1、根据下标获取元素



根据下标获取元素 : 获取从 start 索引开始 , 到 stop 索引结束的元素值 ;

lrange key start stop
  • key : 键 ;
  • start : 元素的起始索引值 ;
  • stop : 元素的终止索引值 ;


如果要 查询 键 对应的 List 列表值

lrange key 0 -1

命令即可 ;



代码示例 :

127.0.0.1:6379> lrange name 0 -1
1) "Jerry"
2) "Tom"
3) "abc"
4) "123"
127.0.0.1:6379> lrange name 0 2
1) "Jerry"
2) "Tom"
3) "abc"
127.0.0.1:6379>

【Redis】Redis 列表 List 操作 ( 查询操作 | 根据下标获取元素 | 获取列表长度 | 增操作 | 插入值 | 删操作 | 移除值 | 修改操作 | 设置列表指定索引的值 )_list



2、获取指定下标索引的元素



执行

lindex key index

命令 , 可以 获取 key 列表 index 索引的值 ;



代码示例 :

127.0.0.1:6379> lrange name 0 -1
1) "Jerry"
2) "Tom"
3) "abc"
127.0.0.1:6379> lindex name 2
"abc"
127.0.0.1:6379>
127.0.0.1:6379>

【Redis】Redis 列表 List 操作 ( 查询操作 | 根据下标获取元素 | 获取列表长度 | 增操作 | 插入值 | 删操作 | 移除值 | 修改操作 | 设置列表指定索引的值 )_NoSQL_02



3、获取列表长度



执行

llen key

命令 , 可以 获取 key 列表 的长度 ;



代码示例 :

127.0.0.1:6379> lrange name 0 -1
1) "Jerry"
2) "Tom"
3) "abc"
127.0.0.1:6379> len name
(error) ERR unknown command 'len'
127.0.0.1:6379>
127.0.0.1:6379> llen name
(integer) 3
127.0.0.1:6379>

【Redis】Redis 列表 List 操作 ( 查询操作 | 根据下标获取元素 | 获取列表长度 | 增操作 | 插入值 | 删操作 | 移除值 | 修改操作 | 设置列表指定索引的值 )_List_03






三、增操作




1、插入值



插入值 :

  • 从左侧插入值 : 从左边开始放数据
lpush key value1 value2 value3 ...
  • 从右侧插入值 : 从右边开始放数据
rpush key value1 value2 value3 ...



如果要 查询 键 对应的 List 列表值 , 使用

lrange key 0 -1

命令即可 ;



代码示例 :

127.0.0.1:6379> lpush name Tom Jerry Jack
(integer) 3
127.0.0.1:6379> lrange name 0 -1
1) "Jack"
2) "Jerry"
3) "Tom"
127.0.0.1:6379>
127.0.0.1:6379> rpush name abc 123 456
(integer) 6
127.0.0.1:6379> lrange name 0 -1
1) "Jack"
2) "Jerry"
3) "Tom"
4) "abc"
5) "123"
6) "456"
127.0.0.1:6379>

【Redis】Redis 列表 List 操作 ( 查询操作 | 根据下标获取元素 | 获取列表长度 | 增操作 | 插入值 | 删操作 | 移除值 | 修改操作 | 设置列表指定索引的值 )_bc_04



2、在指定元素前后插入值



执行

linsert key before/after value newValue

命令 , 可以 在 key 列表 的 value 值 前面 / 后面 插入新值 newValue ;



代码示例 : 在 age 列表中 , 元素 18 之前 , 插入值 110 ;

127.0.0.1:6379> lrange age 0 -1
1) "123"
2) "18"
3) "17"
4) "16"
127.0.0.1:6379> linsert age before 18 110
(integer) 5
127.0.0.1:6379> lrange age 0 -1
1) "123"
2) "110"
3) "18"
4) "17"
5) "16"
127.0.0.1:6379>

【Redis】Redis 列表 List 操作 ( 查询操作 | 根据下标获取元素 | 获取列表长度 | 增操作 | 插入值 | 删操作 | 移除值 | 修改操作 | 设置列表指定索引的值 )_redis_05






四、删操作




1、移除值



移除值 :

  • 从左侧移除值 : 从 List 列表左侧移除一个值 , 如果所有的值都被移除 , 则 键 Key 也随之消亡 ;
lpop key
  • 从右侧移除值 : 从 List 列表右侧移除一个值
rpop key



如果要 查询 键 对应的 List 列表值 , 使用

lrange key 0 -1

命令即可 ;



代码示例 :

127.0.0.1:6379> lrange name 0 -1
1) "Jack"
2) "Jerry"
3) "Tom"
4) "abc"
5) "123"
6) "456"
127.0.0.1:6379>
127.0.0.1:6379> lpop name
"Jack"
127.0.0.1:6379> lrange name 0 -1
1) "Jerry"
2) "Tom"
3) "abc"
4) "123"
5) "456"
127.0.0.1:6379> rpop name
"456"
127.0.0.1:6379> lrange name 0 -1
1) "Jerry"
2) "Tom"
3) "abc"
4) "123"
127.0.0.1:6379>

【Redis】Redis 列表 List 操作 ( 查询操作 | 根据下标获取元素 | 获取列表长度 | 增操作 | 插入值 | 删操作 | 移除值 | 修改操作 | 设置列表指定索引的值 )_List_06



2、删除列表指定个数的指定值



执行

lrem key n value

命令 , 可以 在 key 列表 中 删除左侧的 n 个 value 值 ;



代码示例 : 在 age 列表中 , 删除左侧的 2 个 18 元素 , 这里只有一个 18 元素 , 直接删除 ;

127.0.0.1:6379> lrange age 0 -1
1) "123"
2) "110"
3) "18"
4) "17"
5) "16"
127.0.0.1:6379>
127.0.0.1:6379> lrem age 2 18
(integer) 1
127.0.0.1:6379> lrange age 0 -1
1) "123"
2) "110"
3) "17"
4) "16"
127.0.0.1:6379>

【Redis】Redis 列表 List 操作 ( 查询操作 | 根据下标获取元素 | 获取列表长度 | 增操作 | 插入值 | 删操作 | 移除值 | 修改操作 | 设置列表指定索引的值 )_list_07






五、修改操作




1、多列表操作



执行

rpoplpush key1 key2

命令 , 可以 从 key1 列表右边取出一个值 , 放在 key2 列表的左边 ;



代码示例 :

127.0.0.1:6379> lrange age 0 -1
1) "18"
2) "17"
3) "16"
127.0.0.1:6379> lrange name 0 -1
1) "Jerry"
2) "Tom"
3) "abc"
4) "123"
127.0.0.1:6379>
127.0.0.1:6379> rpoplpush name age
"123"
127.0.0.1:6379> lrange age 0 -1
1) "123"
2) "18"
3) "17"
4) "16"
127.0.0.1:6379>

【Redis】Redis 列表 List 操作 ( 查询操作 | 根据下标获取元素 | 获取列表长度 | 增操作 | 插入值 | 删操作 | 移除值 | 修改操作 | 设置列表指定索引的值 )_List_08



2、设置列表指定索引的值



执行

lset key index value

命令 , 可以 在 key 列表 中 将 第 index 索引位置 的 元素 替换为 value 值 ;



代码示例 : 在 age 列表中 , 将第 2 个元素替换成 888 值 ;

127.0.0.1:6379> lrange age 0 -1
1) "123"
2) "110"
3) "17"
4) "16"
127.0.0.1:6379> lset age 2 888
OK
127.0.0.1:6379> lrange age 0 -1
1) "123"
2) "110"
3) "888"
4) "16"
127.0.0.1:6379>

【Redis】Redis 列表 List 操作 ( 查询操作 | 根据下标获取元素 | 获取列表长度 | 增操作 | 插入值 | 删操作 | 移除值 | 修改操作 | 设置列表指定索引的值 )_bc_09


标签:127.0,name,0.1,Redis,列表,6379,lrange,操作
From: https://blog.51cto.com/u_14202100/6065687

相关文章

  • Mybatisplus----DML编程---多记录操作
    批量处理数据:@TestvoidtestDelete(){//批量按id删除List<Long>list=newArrayList<>();list.add(1626917366924050434L);......
  • 【IMX6ULL学习笔记】十五、设备树DTS操作函数
    一、设备树常用OF操作函数设备树描述了设备的详细信息,这些信息包括数字类型的、字符串类型的、数组类型的,我们在编写驱动的时候需要获取到这些信息。Linux内核给我们提......
  • Linux操作系统课程笔记
    1.配置安装源什么是安装源?安装源类似于一个软件仓库,绝大部分系统软件和工具都可以从软件仓库中自动下载和安装。Ubuntu安装后默认的官方源是美国的服务器,因此访问速度很......
  • Shell命令-常用操作
    Shell基础1Shell命令的基本格式基本格式command[选项][参数][]表示可选的,也就是可有可无。有些命令不写选项和参数也能执行,有些命令在必要的时候可以附带选项和参......
  • 关于python中将字典的所有key组成一个列表的方式
    关于python的字典,我们可以通过MyDict.keys()得到这个字典的所有的key,然后还能通过for循环进行遍历但是细心一点、我们可以发现,MyDict.keys()其实是一个<class'dict_ke......
  • Redis实战12-优惠券实现一人一单功能
    本文收获在上一篇,我们已经把超卖问题解决了。接下来,我们来开发,优惠券一人一单功能。通过本文学习,您将有如下收获:1:悲观锁、乐观锁的使用场景;2:synchronized关键字,在不同位置,锁......
  • (转)vue 利用js触发vue-json-excel的下载操作,解决多次下载等问题
    转载地址:https://www.jianshu.com/p/4d716bec3a26 需求:列表中的每行数据都有一个导出按钮,且点击导出会发起网络请求,获取激活码列表数据。分析:我使用的vue-json-excel......
  • Redis实战11-实现优惠券秒杀下单
    本篇,咱们来实现优惠券秒杀下单功能。通过本篇学习,我们将会有如下收获:1:优惠券领券业务逻辑;2:分析在高并发情况下,出现超卖问题产生的原因;3:解决超卖问题两种方案:版本号法及C......
  • 操作系统习题存档
    进程控制与同步通信进程状态转换的典型事件就绪to运行:CPU调度运行to就绪:该进程时间片用完了堵塞to就绪:I/O完成运行to堵塞:等待I/O信号量机制1.整型信号量w......
  • Linux操作系统介绍
    一、概念1、操作系统管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石。用户在操作系统(应用程序)上操作计算机硬件2、常......