redis基本命令
Redis 基本命令大全(基于 6.0.10 版本)
Redis 提供了丰富的命令用于数据操作、服务器管理和性能监控。本文基于 Redis 6.0.10 版本,整理了常用的核心命令,包括键操作、数据库管理、服务器监控等,帮助快速上手 Redis 操作。
连接与测试
测试连接
ping # 成功返回 "PONG",验证客户端与服务器连接正常
键(Key)的基本操作
设置与获取值
设置键值对(字符串类型)
set key value # 示例:set name "redis"
获取键的值
get key # 示例:get name → 返回 "redis"
键的存在性与删除
判断键是否存在(返回 1 存在,0 不存在)
exists key # 示例:exists name
删除指定键(返回删除的键数量)
del key1 key2 # 示例:del name age
键的过期管理
设置键的过期时间(单位:秒)
expire key seconds # 示例:expire name 60(60秒后过期)
设置键的过期时间(单位:毫秒)
pexpire key milliseconds # 示例:pexpire name 60000
查看键的剩余过期时间(单位:秒,-1 永不过期,-2 已过期)
ttl key # 示例:ttl name
清除键的过期时间(变为永不过期)
persist key # 示例:persist name
注意:设置值时可直接指定过期时间:
set key value ex seconds # 示例:set name "redis" ex 60(60秒过期)
set key value px milliseconds # 示例:set name "redis" px 60000(60000毫秒过期)
键的其他操作
查看键的数据类型(返回 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 进行迭代遍历:
语法: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
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:
select dbindex # 示例:select 2(切换到数据库 2)
清除数据
清除当前数据库的所有键
flushdb
清除所有数据库的所有键(谨慎操作!)
flushall
查看数据库信息
查看当前数据库的键数量
dbsize
服务器监控与配置
查看服务器信息
查看服务器所有信息(版本、内存、CPU 等)
info
查看指定类别信息(如 CPU、内存、持久化等)
info cpu # 查看 CPU 信息
info memory # 查看内存信息
info persistence # 查看持久化信息
查看与修改配置
查看所有配置(可加具体参数名查看单个配置)
config get * # 查看所有配置
config get port # 查看端口配置(默认 6379)
config get requirepass # 查看密码配置
临时修改配置(重启后失效)
config set requirepass "123456" # 设置密码为 123456
慢查询日志
慢查询日志用于记录执行时间超过阈值的命令,帮助排查性能问题:
查看慢查询日志(默认记录执行时间 >10ms 的命令)
slowlog get [条数] # 示例:slowlog get 5(查看最近 5 条慢查询)
查看慢查询日志总数
slowlog len
清空慢查询日志
slowlog reset
配置慢查询参数:
config set slowlog-log-slower-than 10000 # 阈值(微秒,10000 即 10ms)
config set slowlog-max-len 1000 # 最大存储条数(默认 128)
客户端管理
查看所有客户端连接
client list
终止指定客户端连接(IP:端口从 client list 中获取)
client kill 127.0.0.1:57175
设置当前客户端名称(便于识别连接)
client setname "app1"
获取当前客户端名称
client getname
实时监控命令执行
monitor # 实时打印服务器收到的所有命令(调试用,生产环境慎用)
性能统计
实时查看 Redis 关键统计信息(QPS、内存使用等)
redis-cli --stat
注意事项
- 生产环境慎用的命令:
keys *:大数据量下阻塞服务器,改用scan。flushdb/flushall:删除数据不可逆,需确认后执行。monitor:会消耗大量 CPU,影响性能。
- 版本兼容性:部分命令在不同版本中可能有差异(如 Redis 6.0 新增的
client tracking命令),建议参考对应版本的官方文档。 - 安全性:生产环境应通过
config set requirepass设置密码,并限制 IP 访问(通过bind配置)。