【Redis】字符串类型List 常用命令详解

文章目录

          • [1. 添加](#1. 添加)
            • [1.1 lpush - 从左或Rpush - 从右添加元素](#1.1 lpush - 从左或Rpush - 从右添加元素)
            • [1.2 linsert - 插入新值到某个值前后](#1.2 linsert - 插入新值到某个值前后)
          • [2. 获取](#2. 获取)
            • [2.1 lrange - 根据区间获取值](#2.1 lrange - 根据区间获取值)
            • [2.2 lindex - 根据下标获取值](#2.2 lindex - 根据下标获取值)
            • [2.3 llen - 获取列表的长度](#2.3 llen - 获取列表的长度)
          • [3. 删除](#3. 删除)
            • [3.1 lpop - 移除最左或rpop - 最右的元素](#3.1 lpop - 移除最左或rpop - 最右的元素)
            • [3.2 lrem - 移除指定的值](#3.2 lrem - 移除指定的值)
            • [3.3 rpoplpush - 移除最后一个元素且添加到另一个list](#3.3 rpoplpush - 移除最后一个元素且添加到另一个list)
          • [4. ltrim - 根据下标范围截取 list](#4. ltrim - 根据下标范围截取 list)
          • [5. lset - 替换指定下标的值](#5. lset - 替换指定下标的值)
1. 添加
1.1 lpush - 从左或Rpush - 从右添加元素

lpush key value:将元素添加到列表左边

Rpush key value:将元素添加到列表右边

复制代码
> lpush list1 A
1
> lpush list1 B
2
> lpush list1 C
3
> lrange list1 0 -1
1) "C"
2) "B"
3) "A"
1.2 linsert - 插入新值到某个值前后

语法:linsert list before/after value newvalue

复制代码
> lrange list 0 -1
1) "A"
2) "B"
3) "C"

> linsert list1 before C 2B # 在 C 前插入 2B
4

> lrange list1 0 -1
1) "A"
2) "B"
3) "2B"
4) "C"
2. 获取
2.1 lrange - 根据区间获取值

语法:lrange key start end

复制代码
> lrange list1 0 -1 # 获取所有值
1) "C"
2) "B"
3) "A"

> lrange list1 0 1 # 获取指定区间的值
1) "C"
2) "B"
2.2 lindex - 根据下标获取值

语法:lindex list 下标

复制代码
> lrange list1 0 -1
1) "C"
2) "B"

> lindex list1 0
"C"

> lindex list1 1
"B"
2.3 llen - 获取列表的长度

语法: llen list

复制代码
> len list1
2
3. 删除
3.1 lpop - 移除最左或rpop - 最右的元素

lpop key:删除列表最左边的元素,且返回元素

rpop key:删除列表最右边的元素,且返回元素

复制代码
> lrange list1 0 -1
1) "D"
2) "C"
3) "B"
4) "A"

> lpop list1 # 删除列表最左边的元素,且返回元素
"D"

> rpop list1 # 删除列表最右边的元素,且返回元素
"A"

> lrange list1 0 -1
1) "C"
2) "B"
3.2 lrem - 移除指定的值

语法:lrem list num value

复制代码
> lrange list1 0 -1
1) "C"
2) "C"
3) "B"
4) "A"

>lrem list1 1 A # 删除1个A
1

> lrange list1 0 -1
1) "C"
2) "C"
3) "B"

> lrem list1 2 C # 删除2个C
2

> lrange list1 0 -1
1) "B"
3.3 rpoplpush - 移除最后一个元素且添加到另一个list

语法:rpoplpush list1 list2

复制代码
> lrange list1 0 -1
1) "A"
2) "B"
3) "C"

> rpoplpush list1 list2 # 移除 list1 中最后一个元素,且添加到list2 中去
"C"

> lrange list1 0 -1
1) "A"
2) "B"

> lrange list2 0 -1
1) "C"
4. ltrim - 根据下标范围截取 list

语法:ltrim list start end

复制代码
> rpush list1 A
1
> rpush list1 B
2
> rpush list1 C
3
> rpush list1 D
4

> ltrim list1 1 2 # 截取下标为1到2的值
OK

> lrange list1 0 -1
1) "B"
2) "C"
5. lset - 替换指定下标的值

语法:lset list 下标 value

复制代码
> exists list1 # 判断是否存在此list
0

> lset list1 0 beijing # 不存在,替换报错
(error) ERR no such key

> lpush list1 chaozhou # 创建一个list
1
> lindex list1 0
"chaozhou"

> lset list1 0 beijing # 存在,替换成功
OK
> lindex list1 0
"beijing"
相关推荐
胡萝卜的兔2 小时前
ThinkPHP6.0 Redis 延迟队列 + 定时任务 实现超时取消订单完整部署脚本
数据库·redis·缓存
进阶的小名3 小时前
[超轻量级延时队列(MQ)] Redis 不只是缓存:我用 Redis Stream 实现了一个延时MQ(自定义注解方式)
java·数据库·spring boot·redis·缓存·消息队列·个人开发
短剑重铸之日3 小时前
《7天学会Redis》Day 6 - 内存&性能调优
java·数据库·redis·缓存·7天学会redis
DemonAvenger4 小时前
Redis数据迁移与扩容实战:平滑扩展的技术方案
数据库·redis·性能优化
2501_948194984 小时前
RN for OpenHarmony AnimeHub项目实战:人气排行页面开发
redis
a努力。4 小时前
字节跳动Java面试被问:一致性哈希的虚拟节点和数据迁移
java·开发语言·分布式·算法·缓存·面试·哈希算法
qq_318121594 小时前
互联网大厂Java面试故事:支付与金融服务微服务架构、消息队列与AI风控全流程解析
java·spring boot·redis·微服务·kafka·支付系统·金融服务
VT.馒头4 小时前
【力扣】2622. 有时间限制的缓存
javascript·算法·leetcode·缓存·typescript
短剑重铸之日4 小时前
《7天学会Redis》Day 3 - 持久化机制深度解析
java·redis·后端·缓存
qq_435139575 小时前
多级缓存(Caffeine+Redis)技术实现文档
数据库·redis·缓存