redis 通用命令详解

Redis 通用命令详解

Redis 通用命令是不区分数据类型、对所有类型的 key 都生效 的命令,

主要用于对 key 本身进行管理(查询、删除、存在性判断、设置过期等)


1. KEYS 命令

命令作用 :按照指定的匹配规则,查找并返回所有符合条件的 key。

语法格式

复制代码
KEYS pattern

支持的通配符规则:

  • *:匹配 0 个或多个任意字符
  • ?:匹配恰好 1 个任意字符
  • [abc]:匹配括号内的任意一个字符(a / b / c)

重要注意事项

Redis 是单线程模型,KEYS 命令会全量遍历所有 key

当数据库中 key 数量很大时,会长时间阻塞 Redis 主线程,导致服务无法响应其他请求。

生产环境严禁使用 ,生产环境推荐使用 SCAN 命令进行增量迭代查询,不会阻塞服务。

示例

bash 复制代码
# 先准备几个测试 key
127.0.0.1:6379> set user:1 zhangsan
OK
127.0.0.1:6379> set user:2 lisi
OK
127.0.0.1:6379> set product:100 phone
OK
127.0.0.1:6379> set age 20
OK

# 1. 查询所有 key(* 匹配所有)
127.0.0.1:6379> KEYS *
1) "user:1"
2) "user:2"
3) "product:100"
4) "age"

# 2. 查询所有以 user: 开头的 key
127.0.0.1:6379> KEYS user:*
1) "user:1"
2) "user:2"

# 3. 查询名字只有3个字符的 key(? 匹配单个字符)
127.0.0.1:6379> KEYS ???
1) "age"

2. DEL 命令

命令作用 :删除指定的一个或多个 key,不存在的 key 会被自动忽略。

语法格式

复制代码
DEL key [key ...]
  • 返回值:成功被删除的 key 的数量
  • 支持批量删除多个 key,操作是原子性的

示例

bash 复制代码
# 准备测试数据
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> set k2 v2
OK
127.0.0.1:6379> set k3 v3
OK


# 1. 删除单个 key
127.0.0.1:6379> DEL k1
(integer) 1   # 返回1,表示成功删除1个key

# 2. 删除多个 key(包含一个不存在的 k4)
127.0.0.1:6379> DEL k2 k3 k4
(integer) 2   # 返回2,k2、k3被删除,k4不存在被自动忽略

3. EXISTS 命令

命令作用 :判断指定的 key 是否存在,支持同时判断多个 key。

语法格式

复制代码
EXISTS key [key ...]
  • 返回值:存在的 key 的总数量;如果传入多个 key,不会要求全部存在才返回,而是统计存在的个数。

实操示例

bash 复制代码
# 准备测试数据
127.0.0.1:6379> set name tom
OK
127.0.0.1:6379> set age 18
OK

# 1. 判断单个 key 是否存在
127.0.0.1:6379> EXISTS name
(integer) 1   # 1 表示存在

# 2. 判断不存在的 key
127.0.0.1:6379> EXISTS gender
(integer) 0   # 0 表示不存在

# 3. 同时判断多个 key
127.0.0.1:6379> EXISTS name age gender
(integer) 2   # 有 2 个 key 存在(name、age),gender 不存在

4. EXPIRE 命令

命令作用 :给指定的 key 设置过期时间(单位:秒),过期时间结束后,该 key 会被 Redis 自动删除

语法格式

复制代码
EXPIRE key seconds
  • 返回值:
    设置成功返回 1
    key 不存在,或者,无法设置过期时间时,返回 0
  • 同类扩展命令:
    • PEXPIRE key milliseconds:毫秒级设置过期时间
    • EXPIREAT key timestamp:通过 Unix 时间戳(秒级)指定具体过期时间点
    • PERSIST key:移除 key 的过期时间,让 key 变为永久有效

实操示例

bash 复制代码
# 准备测试 key
127.0.0.1:6379> set code 8848
OK

# 1. 给 code 设置 60 秒的过期时间
127.0.0.1:6379> EXPIRE code 60
(integer) 1   # 设置成功

# 2. 给不存在的 key 设置过期时间
127.0.0.1:6379> EXPIRE not_exist 100
(integer) 0   # key 不存在,设置失败

# 3. 移除过期时间(让 key 永久有效)
127.0.0.1:6379> PERSIST code
(integer) 1   # 移除成功

5. TTL 命令

命令作用 :查看指定 key 的剩余过期时间 ,单位为秒。

语法格式

复制代码
TTL key

返回值有 3 种典型情况:

  • 正整数:key 剩余的有效秒数

  • -1:key 存在,但没有设置过期时间(永久有效)

  • -2:key 不存在

  • 同类扩展命令PTTL key,返回毫秒级的剩余过期时间。

实操示例

bash 复制代码
# 准备一个带过期时间的 key
127.0.0.1:6379> set token abc123
OK
127.0.0.1:6379> EXPIRE token 120
(integer) 1

# 1. 查看剩余过期时间
127.0.0.1:6379> TTL token
(integer) 115   # 还剩 115 秒过期

# 2. 查看永久有效的 key
127.0.0.1:6379> set name jack
OK
127.0.0.1:6379> TTL name
(integer) -1    # -1 表示永久有效

# 3. 查看不存在的 key
127.0.0.1:6379> TTL not_exist
(integer) -2    # -2 表示 key 不存在

补充:help 命令

命令作用 :在 redis-cli 中查看任意 Redis 命令的官方说明,包括语法、作用、引入版本、所属分组等。

语法格式

复制代码
help 命令名

实操示例

bash 复制代码
127.0.0.1:6379> help del

  DEL key [key ...]
  summary: Delete a key
  since: 1.0.0
  group: generic
相关推荐
Valora3 小时前
简单学会redis
redis
踏着七彩祥云的小丑6 小时前
忘记Redis是否安装过时查看
数据库·redis·缓存
☆凡尘清心☆8 小时前
CentOS Stream 9 Redis 7.2.7 源码编译一键安装脚本
linux·运维·redis·centos
麻瓜code11 小时前
【Redis 】数据类型、持久化与过期删除
数据库·redis·缓存
☆凡尘清心☆11 小时前
CentOS Stream 9 编译安装 Redis 7.2.7 完整版详细步骤
linux·redis·centos
晚安code12 小时前
RocketMQ 延迟消息实战:延迟双删策略解决 Redis 缓存一致性
redis·rocketmq
山城码农笑松哥12 小时前
Redis 8.8 新特性实操笔记:原生数组、INCREX 限流、XNACK 流处理
redis·笔记·junit
changshuaihua00113 小时前
Redis 详解:Redis 与 MySQL 的区别、数据类型与缓存三大问题
数据库·redis·缓存
随风M记忆s14 小时前
Redis支持事务吗?了解Redis的持久化机制吗?
数据库·redis·bootstrap