全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-12 6 分钟 ✍️ juanwangdev

Redis键管理命令

键管理命令用于查询、删除、设置过期、检查类型等操作,是Redis运维的基础。

KEYS查找键

基本语法

Bash
KEYS pattern

使用示例

Bash
# 查找所有键
KEYS *

# 查找特定前缀
KEYS user:*
# 返回: "user:1000", "user:1001"

# 查找特定后缀
KEYS *:cache

# 查找包含特定字符
KEYS *session*

# 查找单个字符匹配
KEYS user:?00
# 匹配 user:100, user:200 等

KEYS会阻塞,生产环境慎用,大数据量用SCAN替代。

SCAN迭代遍历

基本语法

Bash
SCAN cursor [MATCH pattern] [COUNT count] [TYPE type]

使用示例

Bash
# 遍历所有键
SCAN 0
# 返回: cursor, [key1, key2, ...]

# 继续遍历
SCAN 100

# 匹配特定模式
SCAN 0 MATCH user:* COUNT 100

# 遍历完成后cursor返回0

SCAN不阻塞,适合遍历大量键。

DEL删除键

基本语法

Bash
DEL key [key ...]

使用示例

Bash
# 删除单个键
DEL user:1000

# 删除多个键
DEL user:1000 user:1001 user:1002

# 删除不存在的键
DEL notexist
# 返回: 0

UNLINK异步删除

基本语法

Bash
UNLINK key [key ...]

使用示例

Bash
# 异步删除大键
UNLINK bigkey

UNLINK异步删除,不阻塞主线程,适合删除大键。

EXISTS检查键存在

基本语法

Bash
EXISTS key [key ...]

使用示例

Bash
# 检查单个键
EXISTS user:1000
# 返回: 1(存在)

# 检查多个键
EXISTS user:1000 user:1001 notexist
# 返回: 2(存在2个)

# 不存在的键
EXISTS notexist
# 返回: 0

TYPE获取键类型

基本语法

Bash
TYPE key

使用示例

Bash
SET strkey "value"
TYPE strkey
# 返回: "string"

HSET hashkey field value
TYPE hashkey
# 返回: "hash"

LPUSH listkey value
TYPE listkey
# 返回: "list"

SADD setkey value
TYPE setkey
# 返回: "set"

ZADD zsetkey 1 value
TYPE zsetkey
# 返回: "zset"

EXPIRE设置过期时间

基本语法

Bash
EXPIRE key seconds [NX|XX|GT|LT]

使用示例

Bash
# 设置10秒后过期
EXPIRE mykey 10

# 设置过期时间戳
EXPIREAT mykey 1700000000

# 仅当key有过期时间时设置(XX)
EXPIRE mykey 10 XX

# 仅当key没有过期时间时设置(NX)
EXPIRE mykey 10 NX

# 仅当新时间大于当前过期时间时设置(GT)
EXPIRE mykey 20 GT

# 仅当新时间小于当前过期时间时设置(LT)
EXPIRE mykey 5 LT

TTL查看剩余过期时间

基本语法

Bash
TTL key

使用示例

Bash
# 设置过期
EXPIRE mykey 100

# 查看剩余秒数
TTL mykey
# 返回: 98

# 查看毫秒精度
PTTL mykey
# 返回: 98500

# 永不过期的键
TTL noexpire
# 返回: -1

# 已过期的键
TTL expiredkey
# 返回: -2

TTL返回秒,PTTL返回毫秒,-1永不过期,-2已过期。

PERSIST移除过期时间

基本语法

Bash
PERSIST key

使用示例

Bash
# 设置过期
EXPIRE mykey 100

# 移除过期时间
PERSIST mykey
# 返回: 1

TTL mykey
# 返回: -1(永不过期)

RENAME重命名键

基本语法

Bash
RENAME key newkey

使用示例

Bash
# 重命名键
RENAME oldkey newkey

# 目标键存在时会被覆盖
RENAME key1 key2

安全重命名

Bash
# 仅当目标键不存在时重命名
RENAMENX key1 key2
# 返回: 1(成功)或 0(目标键已存在)

DUMP/RESTORE序列化

导出数据

Bash
# 序列化键值
DUMP mykey
# 返回: 序列化的二进制数据

导入数据

Bash
# 反序列化导入
RESTORE newkey 0 <dump_data>

# 设置过期时间(毫秒)
RESTORE newkey 10000 <dump_data>

# 替换已存在的键
RESTORE newkey 0 <dump_data> REPLACE

OBJECT对象信息

基本语法

Bash
OBJECT subcommand key

使用示例

Bash
# 查看编码类型
OBJECT ENCODING mykey
# 返回: "embstr", "raw", "int", "ziplist" 等

# 查看引用计数
OBJECT REFCOUNT mykey

# 查看空闲时间(秒)
OBJECT IDLETIME mykey

DBSIZE数据库大小

基本语法

Bash
DBSIZE

使用示例

Bash
DBSIZE
# 返回: 1000(当前数据库键总数)

FLUSHDB/FLUSHALL清空数据

清空当前数据库

Bash
# 同步清空
FLUSHDB

# 异步清空
FLUSHDB ASYNC

清空所有数据库

Bash
# 同步清空
FLUSHALL

# 异步清空
FLUSHALL ASYNC

FLUSHALL会清空所有数据,生产环境谨慎使用。

常用命令速查表

命令说明示例
KEYS查找键KEYS *
SCAN迭代遍历SCAN 0
DEL删除键DEL k
UNLINK异步删除UNLINK k
EXISTS检查存在EXISTS k
TYPE获取类型TYPE k
EXPIRE设置过期EXPIRE k 10
TTL查看剩余TTL k
PERSIST移除过期PERSIST k
RENAME重命名RENAME k1 k2
DUMP序列化DUMP k
RESTORE反序列化RESTORE k 0 data

要点总结

  • KEYS生产环境慎用,大数据量使用SCAN替代
  • UNLINK异步删除,适合删除大键
  • TTL返回-1表示永不过期,-2表示已过期
  • EXPIRE支持NX/XX/GT/LT条件设置
  • TYPE返回数据类型:string/hash/list/set/zset
  • RENAME覆盖目标键,RENAMENX安全重命名
  • DUMP/RESTORE用于数据迁移备份
  • FLUSHALL清空所有数据,谨慎使用

📝 发现内容有误?点击此处直接编辑

← 上一篇 Redis过期与持久化
下一篇 → Redis集合命令
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库