Redis 基本命令大全(基于 6.0.10 版本)
Redis 提供了丰富的命令用于数据操作、服务器管理和性能监控。本文基于 Redis 6.0.10 版本,整理了常用的核心命令,包括键操作、数据库管理、服务器监控等,帮助快速上手 Redis 操作。
连接与测试
测试连接
1
| ping # 成功返回 "PONG",验证客户端与服务器连接正常
|
键(Key)的基本操作
设置与获取值
1 2 3 4 5
| # 设置键值对(字符串类型) set key value # 示例:set name "redis"
# 获取键的值 get key # 示例:get name → 返回 "redis"
|
键的存在性与删除
1 2 3 4 5
| # 判断键是否存在(返回 1 存在,0 不存在) exists key # 示例:exists name
# 删除指定键(返回删除的键数量) del key1 key2 # 示例:del name age
|
键的过期管理
1 2 3 4 5 6 7 8 9 10 11
| # 设置键的过期时间(单位:秒) expire key seconds # 示例:expire name 60(60秒后过期)
# 设置键的过期时间(单位:毫秒) pexpire key milliseconds # 示例:pexpire name 60000
# 查看键的剩余过期时间(单位:秒,-1 永不过期,-2 已过期) ttl key # 示例:ttl name
# 清除键的过期时间(变为永不过期) persist key # 示例:persist name
|
注意:设置值时可直接指定过期时间:
1 2
| set key value ex seconds # 示例:set name "redis" ex 60(60秒过期) set key value px milliseconds # 示例:set name "redis" px 60000(60000毫秒过期)
|
键的其他操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| # 查看键的数据类型(返回 string/list/set/hash/zset 等) type key # 示例:type name
# 重命名键 rename oldkey newkey # 示例:rename name username
# 移动键到指定数据库(当前库中键会被删除) move key dbindex # 示例:move name 1(移动到数据库 1)
# 随机返回当前库中的一个键 randomkey
# 查看当前库中所有键(生产环境慎用,大数据量会阻塞服务器) keys * # 示例:keys user_*(匹配所有以 user_ 开头的键)
|
安全遍历键(替代 keys)
keys * 命令在数据量大时会阻塞 Redis,推荐使用 scan 进行迭代遍历:
1 2
| # 语法:scan 游标 [MATCH 模式] [COUNT 数量] scan 0 MATCH user_* COUNT 100 # 从游标 0 开始,匹配 user_* 前缀,每次返回约 100 个键
|
- 返回结果包含新游标和匹配的键,游标为 0 时表示遍历结束。
- 可能返回重复键,需在应用层去重。
在生产环境最好不要使用keys命令,该命令为O(N),数据量大的情况下会导致redis阻塞其他操作,而且一次性返回所有的keys,对内存的消耗也很大,建议使用scan命令来操作
scan就是专门用来解决keys导致redis停顿的问题的,scan是一种迭代命令,其对keys进行了分解,即原本使用一个keys请求一次匹配获取所有符合的key的操作,分解了多次scan操作,每次scan操作返回匹配的key的一个子集,并记录游标,根据游标来进行偏移,这样每个scan请求的操作时间很短,多次scan请求之间可以执行其他命令,故减少对其他命令执行的阻塞,直到最后一个scan请求发现没有数据可返回了,则操作完成,汇总该次所有scan请求的数据,从而达到与keys命令一次获取的数据相同
返回的结果可能会有重复,需要做一下后期去重;遍历过程中如果有数据修改,改动后的数据不一定能获取到;单次返回结果为空并不意味着遍历结束,要看返回的游标值是否为0
1 2 3 4 5 6 7
| #scan cursor [MATCH pattern] [COUNT count] [TYPE type] # cursor表示游标 # MATCH pattern 查询key的条件,可以做模糊查询 # COUNT count 返回的条数 # TYPE type 查询对应类型的key(string/list/set/hash/zset) scan 0 MATCH user_* COUNT 1000 # 返回中包含有游标,下次查询使用该游标进行查询,当游标值为0时表示遍历结束了
|
数据库管理
切换数据库
Redis 默认有 16 个数据库(索引 0~15),默认使用数据库 0:
1
| select dbindex # 示例:select 2(切换到数据库 2)
|
清除数据
1 2 3 4 5
| # 清除当前数据库的所有键 flushdb
# 清除所有数据库的所有键(谨慎操作!) flushall
|
查看数据库信息
服务器监控与配置
查看服务器信息
1 2 3 4 5 6 7
| # 查看服务器所有信息(版本、内存、CPU 等) info
# 查看指定类别信息(如 CPU、内存、持久化等) info cpu # 查看 CPU 信息 info memory # 查看内存信息 info persistence # 查看持久化信息
|
查看与修改配置
1 2 3 4 5 6 7
| # 查看所有配置(可加具体参数名查看单个配置) config get * # 查看所有配置 config get port # 查看端口配置(默认 6379) config get requirepass # 查看密码配置
# 临时修改配置(重启后失效) config set requirepass "123456" # 设置密码为 123456
|
慢查询日志
慢查询日志用于记录执行时间超过阈值的命令,帮助排查性能问题:
1 2 3 4 5 6 7 8
| # 查看慢查询日志(默认记录执行时间 >10ms 的命令) slowlog get [条数] # 示例:slowlog get 5(查看最近 5 条慢查询)
# 查看慢查询日志总数 slowlog len
# 清空慢查询日志 slowlog reset
|
配置慢查询参数:
1 2
| config set slowlog-log-slower-than 10000 # 阈值(微秒,10000 即 10ms) config set slowlog-max-len 1000 # 最大存储条数(默认 128)
|
客户端管理
1 2 3 4 5 6 7 8 9 10 11
| # 查看所有客户端连接 client list
# 终止指定客户端连接(IP:端口从 client list 中获取) client kill 127.0.0.1:57175
# 设置当前客户端名称(便于识别连接) client setname "app1"
# 获取当前客户端名称 client getname
|
实时监控命令执行
1
| monitor # 实时打印服务器收到的所有命令(调试用,生产环境慎用)
|
性能统计
1 2
| # 实时查看 Redis 关键统计信息(QPS、内存使用等) redis-cli --stat
|
注意事项
- 生产环境慎用的命令:
keys *:大数据量下阻塞服务器,改用 scan。
flushdb/flushall:删除数据不可逆,需确认后执行。
monitor:会消耗大量 CPU,影响性能。
- 版本兼容性:部分命令在不同版本中可能有差异(如 Redis 6.0 新增的
client tracking 命令),建议参考对应版本的官方文档。
- 安全性:生产环境应通过
config set requirepass 设置密码,并限制 IP 访问(通过 bind 配置)。