Redis 从入门到精通(三):键操作命令详解

系列导读:本篇将深入讲解 Redis 键操作命令,包括键管理、过期时间、扫描遍历等核心操作。


文章目录

    • 一、键基础操作
      • [1.1 设置与获取](#1.1 设置与获取)
      • [1.2 键重命名](#1.2 键重命名)
      • [1.3 键移动](#1.3 键移动)
    • 二、键过期时间
      • [2.1 设置过期时间](#2.1 设置过期时间)
      • [2.2 查看过期时间](#2.2 查看过期时间)
      • [2.3 移除过期时间](#2.3 移除过期时间)
      • [2.4 过期策略](#2.4 过期策略)
    • 三、键查找与扫描
      • [3.1 KEYS 命令](#3.1 KEYS 命令)
      • [3.2 SCAN 命令(推荐)](#3.2 SCAN 命令(推荐))
      • [3.3 其他 SCAN 命令](#3.3 其他 SCAN 命令)
    • 四、键序列化与迁移
      • [4.1 序列化](#4.1 序列化)
      • [4.2 键迁移](#4.2 键迁移)
    • 五、键命名规范
      • [5.1 推荐命名格式](#5.1 推荐命名格式)
      • [5.2 命名最佳实践](#5.2 命名最佳实践)
    • 总结

一、键基础操作

1.1 设置与获取

bash 复制代码
# 设置键值
SET mykey "Hello"

# 获取值
GET mykey

# 检查键是否存在
EXISTS mykey  # 1存在 0不存在

# 删除键
DEL mykey
DEL key1 key2 key3  # 删除多个

# 获取键类型
TYPE mykey  # string/list/set/zset/hash/stream

1.2 键重命名

bash 复制代码
# 重命名键
RENAME oldkey newkey

# 仅当新键不存在时重命名
RENAMENX oldkey newkey

1.3 键移动

bash 复制代码
# 将键移动到其他数据库
MOVE mykey 1  # 移动到数据库1

二、键过期时间

2.1 设置过期时间

bash 复制代码
# 秒级过期
EXPIRE mykey 60        # 60秒后过期
SETEX mykey 60 "value" # 设置值并设置过期

# 毫秒级过期
PEXPIRE mykey 60000

# 时间戳过期
EXPIREAT mykey 1712345678
PEXPIREAT mykey 1712345678000

2.2 查看过期时间

bash 复制代码
# 查看剩余生存时间(秒)
TTL mykey
# 返回值:-2键不存在,-1永不过期,正数剩余秒数

# 查看剩余生存时间(毫秒)
PTTL mykey

2.3 移除过期时间

bash 复制代码
# 移除过期时间,使键永久存在
PERSIST mykey

2.4 过期策略

复制代码
┌─────────────────────────────────────────────────────────────┐
│                    Redis 过期策略                            │
├─────────────────────────────────────────────────────────────┤
│  1. 惰性删除:访问键时检查是否过期                            │
│  2. 定期删除:定期随机检查部分键                              │
│  3. 内存淘汰:内存不足时触发淘汰策略                          │
└─────────────────────────────────────────────────────────────┘

三、键查找与扫描

3.1 KEYS 命令

bash 复制代码
# 查找所有键
KEYS *

# 模糊匹配
KEYS user:*
KEYS user:*:name
KEYS cache:???

# 注意:KEYS 会阻塞,生产环境慎用!

3.2 SCAN 命令(推荐)

bash 复制代码
# 渐进式遍历
SCAN 0 MATCH user:* COUNT 100

# 返回格式
# 1) "下一个游标"(0表示结束)
# 2) 匹配的键列表

# 完整遍历示例
SCAN 0
SCAN 上次返回的游标
...直到游标为0

3.3 其他 SCAN 命令

bash 复制代码
# 遍历 Hash
HSCAN myhash 0 MATCH field:* COUNT 100

# 遍历 Set
SSCAN myset 0 MATCH member* COUNT 100

# 遍历 ZSet
ZSCAN myzset 0 MATCH member* COUNT 100

四、键序列化与迁移

4.1 序列化

bash 复制代码
# 序列化键值
DUMP mykey
# 返回序列化后的值

# 反序列化并恢复
RESTORE mykey 0 "序列化值"

4.2 键迁移

bash 复制代码
# 内部迁移(同实例不同库)
MOVE mykey 1

# 跨实例迁移
MIGRATE 192.168.1.100 6379 mykey 0 5000
# 参数:目标IP 端口 键名 目标DB 超时毫秒

五、键命名规范

5.1 推荐命名格式

复制代码
业务:对象:ID:属性

示例:
user:1001:profile
user:1001:cart
order:20240101:12345
cache:product:detail:100
session:token:abc123

5.2 命名最佳实践

规范 示例
使用冒号分隔 user:1001:name
避免特殊字符 不用空格、换行
保持简洁 u:1001:n 过短不可读
统一前缀 app:user:1001

总结

本文我们学习了:

✅ 基础操作 :SET/GET/DEL/EXISTS/TYPE

✅ 过期时间 :EXPIRE/TTL/PERSIST

✅ 键查找 :KEYS/SCAN

✅ 键迁移 :DUMP/RESTORE/MIGRATE

✅ 命名规范:业务:对象:ID:属性

下篇预告 :Redis 从入门到精通(四):字符串操作详解


作者 :刘~浪地球
系列 :Redis 从入门到精通(三)
更新时间:2026-04-03

相关推荐
ClickHouseDB5 小时前
ClickHouse Cloud 与 Snowflake 实时性价比对比:CostBench 测试中的 412 倍差距来
运维·数据库·系统架构
m0_639906945 小时前
Redis入门|五种数据结构、使用场景、持久化RDB&AOF
数据结构·数据库·redis
时间售卖铺6 小时前
触发器与函数实战:MySQL高效编程秘诀
运维·数据库·mysql·云原生
qetfw6 小时前
UOS MariaDB 数据库:安装、最小权限与备份验证
linux·数据库·mariadb·uos
数智园区合作社7 小时前
问数平台怎么把同一个指标锁成一个数
大数据·数据库·人工智能·ai
lbb 小魔仙7 小时前
Windows搭建PaddleOCR+飞书Webhook自动打卡通知机器人:识别、推送与远程触发完整教程
数据库·人工智能·prometheus·时序数据库
captain3768 小时前
MyBatis操作数据库(入门2)
java·数据库·spring boot·后端·spring·mybatis
心中有你02149 小时前
Java实现Dijkstra最短路径算法(邻接表 + 优先队列)
java·数据库·算法
龙亘川9 小时前
综合素质评价业务建模:从过程性评价到成长档案全链路闭环
数据库·智慧城市·数据可视化
数据库小组9 小时前
NineData 实战教程:MySQL 5.5 数据迁移同步到 MySQL 8.0(跨版本升级)
数据库·mysql·mysql优化·数据库开发·数据库迁移·版本升级·数据复制