0%

redis基本命令

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
# 查看当前数据库的键数量
dbsize

服务器监控与配置

查看服务器信息

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

注意事项

  1. 生产环境慎用的命令
    • keys *:大数据量下阻塞服务器,改用 scan
    • flushdb/flushall:删除数据不可逆,需确认后执行。
    • monitor:会消耗大量 CPU,影响性能。
  2. 版本兼容性:部分命令在不同版本中可能有差异(如 Redis 6.0 新增的 client tracking 命令),建议参考对应版本的官方文档。
  3. 安全性:生产环境应通过 config set requirepass 设置密码,并限制 IP 访问(通过 bind 配置)。

欢迎关注我的其它发布渠道