目录
[Redis 不同数据库的切换](#Redis 不同数据库的切换)
[查看 key](#查看 key)
[Info 常用信息说明(Zabbix 监控参考)](#Info 常用信息说明(Zabbix 监控参考))
[单独查看某一块 info 内容](#单独查看某一块 info 内容)
[5. redis配置的动态更新](#5. redis配置的动态更新)
[Redis 更新配置两种方式](#Redis 更新配置两种方式)
[查看 Redis 连接相关](#查看 Redis 连接相关)
[ACL SETUSER创建用户](#ACL SETUSER创建用户)
[1:只读用户 test,仅访问 name * 前缀 key](#1:只读用户 test,仅访问 name * 前缀 key)
[3:全部权限,但禁止 config 高危命令](#3:全部权限,但禁止 config 高危命令)
[4:监控账号,只允许 info、monitor](#4:监控账号,只允许 info、monitor)
[1. 查看慢日志的默认配置](#1. 查看慢日志的默认配置)
[2. 设置慢日志阈值:超过 1 毫秒记慢日志](#2. 设置慢日志阈值:超过 1 毫秒记慢日志)
[4Slowlog 各字段含义](#4Slowlog 各字段含义)
[5Redis 的 key 的有效期](#5Redis 的 key 的有效期)
[Redis 禁用危险命令](#Redis 禁用危险命令)
[Redis 压测工具 redis‑benchmark](#Redis 压测工具 redis‑benchmark)
4.redis的不同库切换和运维监控命令
Redis 不同数据库的切换
Redis 内置逻辑数据库,默认 16 个,编号 0‑15 ,配置项 databases 16
各个库之间数据互相独立隔离。同一个 key 名字,在 db0 和 db2 可以存完全不同的值,互不干扰。
# 查看库总数量(Linux终端执行)
grep databases /etc/redis.conf
切换数据库 select
select 0 # 切换到0号库(登录默认就在0库)
select 1 # 切换到1号库
select 16 # 报错!最大编号是15,没有16号库
查看 key
RANDOMKEY #随机获取一个key
KEYS * #查看所有key,注意阻塞,如果key量特别大时候,容易卡死阻塞,上千万上百万时候容易阻塞
SCAN 0 #建议使用,每次获取11个key,可以循环获取,直到获取所有key
#从编号0开始,中间会有一个编号提示(类似索引编号),按编号提示依次循环获取,直到编号为0即表示获取完所有的key
-
RANDOMKEY 随机从当前数据库返回一个 key,不会遍历全量数据,无阻塞风险,适合抽样查看。
-
KEYS * 遍历当前库全部 key 一次性返回。
-
SCAN 0#建议使用,每次获取 11 个 key,可以循环获取,直到获取所有 key
#从编号 0 开始,中间会有一个编号提示 (类似索引编号),按编号提示依次循环获取,直到编号为 0 即表示获取完所有的 key
监控命令
bash
redis-cli -a redispwd --stat #监控Redis状态

1多客户端接入、新增 key,指标会实时变化。
redis-cli -a redispwd monitor #监控数据操作
交互式阻塞输出,实时记录所有客户端执行的增、删、改命令。
⚠️高并发生产环境慎用,会消耗大量 CPU。
2 输出全量运行信息,供Zabbix等监控系统采集
bash
bashredis-cli -a redispwd info
Info 常用信息说明(Zabbix 监控参考)
- Server:服务器基础信息,包含 Redis 版本、运行时长、进程 ID 等。
- Clients:客户端连接状态,包含当前连接数、阻塞客户端数、最大连接限制等。
- Memory :Redis 内存占用核心指标。
used_memory:数据集实际占用的内存大小。used_memory_rss:操作系统分配给 Redis 的实际物理内存。mem_fragmentation_ratio:内存碎片率,反映内存使用效率。maxmemory:配置的最大内存上限。
- Persistence :持久化存储状态信息。
rdb_*:RDB 快照相关状态与耗时。aof_enabled:0:AOF 持久化开关,默认关闭。
- Stats:运行状态统计信息,是监控重点,包含 QPS、缓存命中率、驱逐键数量等。
- Replication :主从复制与哨兵状态监控信息。
role:master:当前实例角色(主/从)。connected_slaves:0:已连接的从节点数量。
- CPU:CPU 资源消耗,包含内核态(sys)与用户态(user)占用。
- Cluster:Redis 集群专属信息,包含集群状态、节点数量等。
- Keyspace:键空间分布信息,包含各数据库的 key 数量、过期 key 数量及平均 TTL。
单独查看某一块 info 内容
只输出指定模块,减少输出内容,监控脚本常用
redis-cli -a redispwd info Server
redis-cli -a redispwd info Clients
redis-cli -a redispwd info Memory
.
5. redis配置的动态更新
Redis 更新配置两种方式
- 重启更新:修改配置文件,重启 Redis 生效
- 实时动态更新:无需重启,运行时修改
重启方式修改密码
vim /etc/redis.conf
requirepass 123456
# 修改保存后重启redis生效
动态更新密码(不重启)
# 查看当前密码
config get requirepass
# 动态设置密码
config set requirepass 123456
# 将运行时配置写入redis.conf持久保存
config rewrite
config set只是内存生效;必须执行config rewrite才会把配置写入配置文件,否则重启后配置丢失。
查看 Redis 连接相关
info clients # 查看当前客户端连接数
config get maxclients # 查看允许的最大客户端连接数
动态修改最大连接数示例
# 查询当前最大连接,默认10000
config get maxclients
# 动态修改为20000(内存立即生效)
config set maxclients 20000
# 验证修改结果
config get maxclients
# 写入配置文件永久保存
config rewrite
.
6Redis的多用户权限管理
默认超级用户:default,拥有全部权限。
基础查看命令
ACL LIST # 列出全部用户
ACL GETUSER default # 查看指定用户详细权限
ACL CAT # 查看所有权限分类(read/write/admin/dangerous等)
ACL SETUSER创建用户
ACL SETUSER 语法拆解
ACL SETUSER <用户名> <on|off> >密码 ~key模式 +命令/-命令
on:启用用户;off禁用用户>xxx:设置用户密码~pattern:key 匹配规则,~*代表所有 key;~name*只匹配 name 开头的 key+cmd:增加命令权限;-cmd移除命令权限+@分类:授予某一类全部命令,例如+@read授予全部读命令,+@all全部权限
实操案例
1:只读用户 test,仅访问 name * 前缀 key
# 创建用户test,密码testpwd,仅对name*开头key拥有全部读权限
ACL SETUSER test on >testpwd ~name* +@read
# 查看用户权限
ACL GETUSER test
登录两种方式
# 连接内认证
auth test testpwd
# 命令行登录
redis-cli --user test --pass testpwd
权限效果:
- ✅
get name1正常读取 - ❌
get k1无权限(key 不匹配) - ❌
set k3 v3无写权限
2:赋予全部权限
ACL SETUSER test1 on >test1pwd ~* +@all
3:全部权限,但禁止 config 高危命令
ACL SETUSER test2 on >test2pwd ~* +@all -config
适合业务应用账号,禁止修改 Redis 运行配置。
4:监控账号,只允许 info、monitor
ACL SETUSER monitor on >monitorpwd ~* +info +monitor
监控程序专用账号,不能读写业务 key,仅允许查看状态。
删除用户
ACL DELUSER t666
ACL LIST
持久化关键点
通过ACL SETUSER是内存中生效,重启 Redis 会丢失用户!
config rewrite
执行config rewrite,会将 ACL 用户信息写入 redis.conf,重启账号权限保留。
.
7.redis的慢日志和key的有效期
1. 查看慢日志的默认配置
CONFIG GET slow* #查看慢日志的配置
返回结果:
单位微秒ns,1000ns=1ms
1) "slowlog-max-len"
2) "128" #最多记录128个
3) "slowlog-log-slower-than"
4) "10000" #默认超过10毫秒就会记录(单位微秒)
2. 设置慢日志阈值:超过 1 毫秒记慢日志
config set slowlog-log-slower-than 1000 #设置慢日志的时间是1毫秒,查询超过1毫秒就为慢日志
CONFIG GET slow* #查看配置
返回:
1) "slowlog-max-len"
2) "128"
3) "slowlog-log-slower-than"
4) "1000" #1毫秒为慢日志
3查询慢日志相关命令
SLOWLOG get #默认获取最近10条
SLOWLOG get 5 #获取5条
SLOWLOG len #慢日志量,查看慢日志的条数
SLOWLOG reset #清空慢日志
4Slowlog 各字段含义
127.0.0.1:6379> config get slow*
1) "slowlog-max-len"
2) "128"
3) "slowlog-log-slower-than"
4) "1000"
127.0.0.1:6379> slowlog get
1) 1) (integer) 2
2) (integer) 1786181610
3) (integer) 2549
4) 1) "keys"
2) "*"
5) "127.0.0.1:58272"
6) ""
2) 1) (integer) 1
2) (integer) 1786181609
3) (integer) 2118
4) 1) "keys"
2) "*"
5) "127.0.0.1:58272"
6) ""
5Redis 的 key 的有效期
给 Redis 的 key 设置有效期:
-1表示永久-2代表 Redis 回收了(key 已经自动删除)
set name test1 #默认设置的key是永久有效的
get name
"test1"
ttl name #查看key的状态,生命周期,-1表示永久有效
(integer) -1
expire name 20 #方法1:给key设置有效期,单位:秒,设置有效期是20s
set name2 test02 EX 20 #方法2:创建key的时候直接给key设置有效期:20s
.
8.redis禁用危险命令和压测工具介绍
Redis 禁用危险命令
危险命令
| 命令 | 危害 |
|---|---|
FLUSHALL |
清空 Redis 全部数据库所有数据 |
FLUSHDB |
清空当前 db 的全部 key 数据 |
KEYS * |
遍历全部 key,大数据量阻塞主线程,卡死业务 |
配置禁用
修改 redis 配置文件 /etc/redis.conf,添加rename-command把命令重命名为空字符串,修改后必须重启 redis 生效
rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command KEYS ""
测试:执行keys *、flushall,命令直接失效。

Redis 压测工具 redis‑benchmark
常用参数
redis-benchmark --help
-c <clients>:并发客户端数量,默认 50-n <requests>:总请求数,默认 100000
执行压测
# 默认参数压测:50并发,10万请求
redis-benchmark -a redispwd
# 压测同时保存输出日志
redis-benchmark -a redispwd | tee /tmp/a.log
# 指定总请求数10,默认50并发
redis-benchmark -a redispwd -n 10
打开日志文件:vim /tmp/a.log
-
PING_INLINE:ping 连通性测试
100000 requests completed in 1.10 seconds
50 parallel clients
3 bytes payload
100.000% <= 2.527 milliseconds
- 10 万请求,50 并发,每个请求 3 字节;100% 请求延迟小于 2.527ms
-
SET 命令结果样例
100000 requests completed in 1.07 seconds
50 parallel clients
3 bytes payload
......
throughput summary: 93370.68 requests per second #QPS,每秒处理93370次set请求
latency summary (msec):
avg min p50 p95 p99 max
0.302 0.072 0.247 0.599 1.111 2.183 -
GET 命令结果样例
100000 requests completed in 1.12 seconds
50 parallel clients
3 bytes payload
......
throughput summary: 89445.44 requests per second #每秒处理89445次get请求
latency summary (msec):
avg min p50 p95 p99 max
0.326 0.048 0.255 0.687 1.311 2.447
指标说明
avg:平均延迟;min最小延迟;max最大延迟p50/p95/p99:百分位延迟,p99 代表 99% 请求耗时低于该数值throughput summary:QPS,每秒处理请求数量
这是我的个人学习笔记,主要用于记录自己对知识点的理解和梳理。由于目前仍在学习探索阶段,内容中难免存在理解偏差或表述疏漏,恳请各位大佬不吝赐教,多提宝贵意见~ 若有不同看法,欢迎理性交流探讨,感谢包容与指正!