系列导读:本篇将深入讲解 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