一、Redis 基础键(Key)操作
Redis 中所有数据都以「键值对(Key-Value)」形式存储,以下指令围绕 Key 的核心操作展开,适用于所有数据类型。
1. 核心基础:设置 Key 与查看单个 Key
设置 Key-Value:set key value [EX seconds] [PX milliseconds] [NX|XX]
功能:最基础的指令,用于创建或修改一个 Key 对应的 Value(默认是字符串类型),支持可选参数扩展功能。
可选参数说明:
EX seconds:等同于expire,直接设置过期时间(单位:秒);PX milliseconds:等同于pexpire,设置毫秒级过期时间;NX:仅当 Key 不存在时才设置(避免覆盖已有值);XX:仅当 Key 已存在时才修改(更新已有值)。示例:
# 基础用法:创建/修改 Key(永久有效)
127.0.0.1:6379> set name "zhangsan"
OK
# 设置 Key 并指定 300 秒后过期
127.0.0.1:6379> set age 25 EX 300
OK
# 仅当 Key 不存在时设置(避免覆盖)
127.0.0.1:6379> set name "lisi" NX
(nil) # name 已存在,设置失败
# 仅当 Key 存在时更新
127.0.0.1:6379> set name "zhangsan_update" XX
OK # name 已存在,更新成功
查看单个 Key 的值:get key
功能:获取指定 Key 对应的 Value,若 Key 不存在则返回
nil。示例:
127.0.0.1:6379> get name
"zhangsan_update" # 返回 Key 对应的 Value
127.0.0.1:6379> get non_exist_key
(nil) # Key 不存在
2. 查看所有 Key:keys *
功能:列出当前数据库中所有的 Key(支持通配符,如
keys user:*匹配所有以user:开头的键)。示例:
127.0.0.1:6379> keys *
1) "name"
2) "age"
3) "user:1001"
注意:生产环境慎用
keys *,若数据库中 Key 数量过多,会阻塞 Redis 服务(Redis 是单线程模型),建议用scan指令替代。
3. 删除 Key:del key [key ...]
功能:删除一个或多个 Key,返回成功删除的 Key 数量。
示例:
127.0.0.1:6379> del name age
(integer) 2 # 成功删除 2 个 Key
4. 检查 Key 是否存在:exists key
功能:判断指定 Key 是否存在,返回 1 表示存在,0 表示不存在。
示例:
127.0.0.1:6379> exists name
(integer) 0 # 不存在
127.0.0.1:6379> exists user:1001
(integer) 1 # 存在
5. 设置 Key 过期时间:expire key seconds
功能:为 Key 设置生存时间(单位:秒),过期后 Key 会自动删除。
示例:
127.0.0.1:6379> expire user:1001 300 # 设置 5 分钟后过期
(integer) 1 # 设置成功
扩展:若需设置毫秒级过期时间,可用
pexpire key milliseconds。
6. 移除 Key 过期时间:persist key
功能:取消 Key 的过期时间,让 Key 永久有效(仅对已设置过期时间的 Key 有效)。
示例:
127.0.0.1:6379> persist user:1001
(integer) 1 # 移除成功
7. 移动 Key 到指定数据库:move key db
功能:将当前数据库的 Key 移动到指定编号的数据库(Redis 默认有 16 个数据库,编号 0~15)。
示例:
127.0.0.1:6379> move user:1001 1 # 移动到数据库 1
(integer) 1 # 移动成功
8. 查看 Key 剩余生存时间:ttl key / pttl key
ttl key:返回 Key 剩余生存时间(单位:秒),结果含义:正数:剩余秒数;
-1:Key 永久有效(无过期时间);
-2:Key 不存在或已过期。
pttl key:返回毫秒级剩余生存时间(精度更高)。示例:
127.0.0.1:6379> ttl user:1001
(integer) 256 # 剩余 256 秒
127.0.0.1:6379> pttl user:1001
(integer) 255892 # 剩余 255892 毫秒
9. 随机返回一个 Key:randomkey
功能:从当前数据库中随机返回一个存在的 Key(无需遍历所有 Key,效率高)。
示例:
127.0.0.1:6379> randomkey
"user:1001"
10. 修改 Key 名称:rename key newkey
功能:将 Key 重命名为
newkey,若newkey已存在,会覆盖原newkey的值。示例:
127.0.0.1:6379> rename user:1001 user:admin
OK
安全替代:若需避免覆盖已有 Key,可用
renamenx key newkey(仅当newkey不存在时才重命名)。
11. 查看 Key 存储值的类型:type key
功能:返回 Key 对应 Value 的数据类型(Redis 支持 string、hash、list、set、zset 等)。
示例:
127.0.0.1:6379> set name "zhangsan"
OK
127.0.0.1:6379> type name
string # Value 是字符串类型
12. 切换数据库:select db
功能:切换到指定编号的数据库(默认使用数据库 0)。
示例:
127.0.0.1:6379> select 1 # 切换到数据库 1
OK
127.0.0.1:6379[1]> # 提示符后显示当前数据库编号
二、Redis 服务端管理指令
这类指令用于查看服务状态、配置信息,或执行服务级操作(如退出、清空数据)。
1. 测试服务连通性:ping
功能:检测 Redis 服务是否正常运行,正常返回
PONG,异常返回错误信息。示例:
127.0.0.1:6379> ping
PONG # 服务正常
用途:常用于心跳检测(如客户端判断服务是否可用)。
2. 退出客户端连接:quit
功能:关闭当前客户端与 Redis 服务的连接(不会影响服务端运行)。
示例:
127.0.0.1:6379> quit
OK
3. 查看当前数据库 Key 数量:dbsize
功能:返回当前数据库中 Key 的总数(效率比
keys *高,无需遍历所有 Key)。示例:
127.0.0.1:6379> dbsize
(integer) 5 # 当前数据库有 5 个 Key
4. 查看服务状态信息:info
功能:返回 Redis 服务的详细信息,包括版本、内存使用、连接数、持久化状态等。
常用参数:
info:返回所有信息;info server:仅查看服务基础信息(版本、启动时间等);info memory:仅查看内存使用情况;info stats:仅查看统计信息(如 Key 命中次数、过期数量等)。示例:
127.0.0.1:6379> info server
# Server
redis_version:7.0.12
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:f8a9579f0e2e32d6
redis_mode:standalone
os:Linux 5.15.0-78-generic x86_64
...
5. 查看服务配置信息:config get pattern
功能:获取 Redis 服务的配置参数,
pattern支持通配符(*表示所有配置)。常用示例:
127.0.0.1:6379> config get dir # 查看 Redis 数据存储目录
1) "dir"
2) "/var/lib/redis"
127.0.0.1:6379> config get port # 查看服务端口
1) "port"
2) "6379"
127.0.0.1:6379> config get * # 查看所有配置(输出较多)
6. 清空当前数据库:flushdb
功能:删除当前选中数据库中的所有 Key(谨慎使用!不可逆)。
示例:
127.0.0.1:6379> flushdb
OK # 清空成功
127.0.0.1:6379> dbsize
(integer) 0 # 已无 Key
7. 清空所有数据库:flushall
功能:删除 Redis 所有数据库(0~15)中的所有 Key(生产环境严禁随意使用!)。
示例:
127.0.0.1:6379> flushall
OK
三、实用技巧与注意事项
区分「当前数据库」与「所有数据库」:
flushdb仅清空当前选中数据库,flushall清空所有,操作前务必确认当前数据库(select指令切换)。过期时间与持久化:设置过期时间的 Key,过期后会被 Redis 自动删除(惰性删除 + 定期删除),但如果开启了持久化(RDB/AOF),过期的 Key 不会被写入持久化文件,避免数据冗余。
生产环境避坑:
禁用
keys *和flushall,可通过 Redis 配置文件限制危险指令(如rename-command FLUSHALL "");重要数据建议开启持久化,并定期备份;
避免给高频访问的 Key 设置过短的过期时间,减少过期删除带来的性能开销。