目录
- Redis 数据类型验证报告
- 一、环境信息
- 1.1 分片集群环境 (redis-2ffca4ed)
- 1.2 哨兵环境 (redis-147885f8)
- 二、数据类型验证结果
- 2.1 分片集群验证 (redis-2ffca4ed)
- 验证详情
- 2.2 哨兵环境验证 (redis-147885f8)
- 验证详情
- 三、查看Key命令验证
- 3.1 DBSIZE命令 - 查看key总数
- 3.2 KEYS命令 - 查看所有key(生产慎用)
- 3.3 SCAN命令 - 增量遍历key(推荐)
- 3.4 TYPE命令 - 查看key类型
- 3.5 TTL命令 - 查看key过期时间
- 3.6 其他常用Key操作命令
- 四、验证结论
- 4.1 数据类型兼容性
- 4.2 关键差异
- 4.3 命令可用性总结
- 4.4 建议
- 五、验证命令清单
- 连接方式
- Key管理命令实际执行示例
- 命令快速参考
Redis 数据类型验证报告
验证时间: 2026-01-20
验证环境: 148集群
一、环境信息
1.1 分片集群环境 (redis-2ffca4ed)
| 配置项 | 值 |
|---|---|
| Redis版本 | 6.2.19 |
| 运行模式 | cluster(集群模式) |
| 服务地址 | 246.98.142.58:6379 |
| 分片信息 | 0-0/0-1/1-0/1-1/2-0/2-1(3个分片,每个2副本) |
| 当前key数量 | 33,378 |
| Proxy层 | redis-2ffca4ed-predixy-0/1 |
1.2 哨兵环境 (redis-147885f8)
| 配置项 | 值 |
|---|---|
| Redis版本 | 7.2.11 |
| 运行模式 | standalone(主从复制+哨兵) |
| 服务地址 | 246.97.125.146:6379 |
| 哨兵节点 | redis-147885f8-sentinel-0/1/2 |
| 主从副本 | drc-redis-147885f8-0/1 |
二、数据类型验证结果
2.1 分片集群验证 (redis-2ffca4ed)
| 数据类型 | 操作命令 | 验证Key | 验证结果 |
|---|---|---|---|
| STRING | SET/GET/TYPE | verify:cluster:string | ✅ 通过 |
| HASH | HSET/HGETALL/TYPE | verify:cluster:hash | ✅ 通过 |
| LIST | LPUSH/LRANGE/TYPE | verify:cluster:list | ✅ 通过 |
| SET | SADD/SMEMBERS/TYPE | verify:cluster:set | ✅ 通过 |
| ZSET | ZADD/ZRANGE/TYPE | verify:cluster:zset | ✅ 通过 |
验证详情
STRING类型:
SET verify:cluster:string "集群模式字符串测试" GET verify:cluster:string → "集群模式字符串测试" TYPE verify:cluster:string → "string"HASH类型:
HSET verify:cluster:hash name "张三" age 25 city "北京" HGETALL verify:cluster:hash → name="张三", age="25", city="北京" TYPE verify:cluster:hash → "hash"LIST类型:
LPUSH verify:cluster:list "task1" "task2" "task3" LRANGE verify:cluster:list 0 -1 → ["task3", "task2", "task1"] TYPE verify:cluster:list → "list"SET类型:
SADD verify:cluster:set "python" "redis" "kubernetes" SMEMBERS verify:cluster:set → ["redis", "python", "kubernetes"] TYPE verify:cluster:set → "set"ZSET类型:
ZADD verify:cluster:zset 100 "player1" 85 "player2" 92 "player3" ZRANGE verify:cluster:zset 0 -1 WITHSCORES → player2(85), player3(92), player1(100) TYPE verify:cluster:zset → "zset"2.2 哨兵环境验证 (redis-147885f8)
| 数据类型 | 操作命令 | 验证Key | 验证结果 |
|---|---|---|---|
| STRING | SET/GET/TYPE | verify:sentinel:string | ✅ 通过 |
| HASH | HSET/HGETALL/TYPE | verify:sentinel:hash | ✅ 通过 |
| LIST | LPUSH/LRANGE/TYPE | verify:sentinel:list | ✅ 通过 |
| SET | SADD/SMEMBERS/TYPE | verify:sentinel:set | ✅ 通过 |
| ZSET | ZADD/ZRANGE/TYPE | verify:sentinel:zset | ✅ 通过 |
验证详情
STRING类型:
SET verify:sentinel:string "哨兵模式字符串测试" GET verify:sentinel:string → "哨兵模式字符串测试" TYPE verify:sentinel:string → "string"HASH类型:
HSET verify:sentinel:hash name "李四" age 30 city "上海" HGETALL verify:sentinel:hash → name="李四", age="30", city="上海" TYPE verify:sentinel:hash → "hash"LIST类型:
LPUSH verify:sentinel:list "item1" "item2" "item3" LRANGE verify:sentinel:list 0 -1 → ["item3", "item2", "item1"] TYPE verify:sentinel:list → "list"SET类型:
SADD verify:sentinel:set "docker" "prometheus" "grafana" SMEMBERS verify:sentinel:set → ["docker", "prometheus", "grafana"] TYPE verify:sentinel:set → "set"ZSET类型:
ZADD verify:sentinel:zset 2000 "user1" 1500 "user2" 1800 "user3" ZRANGE verify:sentinel:zset 0 -1 WITHSCORES → user2(1500), user3(1800), user1(2000) TYPE verify:sentinel:zset → "zset"三、查看Key命令验证
3.1 DBSIZE命令 - 查看key总数
实际执行结果:
分片集群:
$ kubectlexec-n qfusion-admin drc-redis-2ffca4ed-0-0 -c redis --\redis-cli --user default -a'ff23@PfGnbgifklf'-c DBSIZE33378哨兵环境:
$ kubectlexec-n qfusion-admin drc-redis-147885f8-0 -c redis --\redis-cli --user default -a'bqqkYdb@ggdpX60f'DBSIZE5| 环境 | 命令 | 实际结果 |
|---|---|---|
| 分片集群 | DBSIZE | 33,378 |
| 哨兵环境 | DBSIZE | 5 |
3.2 KEYS命令 - 查看所有key(生产慎用)
⚠️重要发现: 该环境中KEYS命令已被禁用(安全配置)
实际执行结果:
分片集群:
$ kubectlexec-n qfusion-admin drc-redis-2ffca4ed-0-0 -c redis --\redis-cli --user default -a'ff23@PfGnbgifklf'-c KEYS"verify:cluster:*"ERR unknowncommand`KEYS verify:cluster:*`, with args beginning with:哨兵环境:
$ kubectlexec-n qfusion-admin drc-redis-147885f8-0 -c redis --\redis-cli --user default -a'bqqkYdb@ggdpX60f'KEYS"verify:sentinel:*"ERR unknowncommand'KEYS verify:sentinel:*', with args beginning with:| 环境 | 命令 | 实际结果 |
|---|---|---|
| 分片集群 | KEYS “verify:cluster:*” | ❌ ERR unknown command (已禁用) |
| 哨兵环境 | KEYS “verify:sentinel:*” | ❌ ERR unknown command (已禁用) |
3.3 SCAN命令 - 增量遍历key(推荐)
⚠️重要发现: 该环境中SCAN命令也已被禁用
实际执行结果:
分片集群:
$ kubectlexec-n qfusion-admin drc-redis-2ffca4ed-0-0 -c redis --\redis-cli --user default -a'ff23@PfGnbgifklf'-c SCAN0MATCH"verify:cluster:*"COUNT100ERR unknowncommand`SCAN0MATCH verify:cluster:* COUNT100`, with args beginning with:哨兵环境:
$ kubectlexec-n qfusion-admin drc-redis-147885f8-0 -c redis --\redis-cli --user default -a'bqqkYdb@ggdpX60f'SCAN0MATCH"verify:sentinel:*"COUNT100ERR unknowncommand`SCAN0MATCH verify:sentinel:* COUNT100`, with args beginning with:| 环境 | 命令 | 实际结果 |
|---|---|---|
| 分片集群 | SCAN 0 MATCH “verify:cluster:*” | ❌ ERR unknown command (已禁用) |
| 哨兵环境 | SCAN 0 MATCH “verify:sentinel:*” | ❌ ERR unknown command (已禁用) |
3.4 TYPE命令 - 查看key类型
实际执行结果:
分片集群:
$ kubectlexec-n qfusion-admin drc-redis-2ffca4ed-0-0 -c redis --\redis-cli --user default -a'ff23@PfGnbgifklf'-c TYPE verify:cluster:string string哨兵环境:
$ kubectlexec-n qfusion-admin drc-redis-147885f8-0 -c redis --\redis-cli --user default -a'bqqkYdb@ggdpX60f'TYPE verify:sentinel:string string| 环境 | 命令 | 实际结果 |
|---|---|---|
| 分片集群 | TYPE verify:cluster:string | ✅ string |
| 哨兵环境 | TYPE verify:sentinel:string | ✅ string |
3.5 TTL命令 - 查看key过期时间
实际执行结果:
分片集群:
$ kubectlexec-n qfusion-admin drc-redis-2ffca4ed-0-0 -c redis --\redis-cli --user default -a'ff23@PfGnbgifklf'-c TTL verify:cluster:string -1# 表示永不过期哨兵环境:
$ kubectlexec-n qfusion-admin drc-redis-147885f8-0 -c redis --\redis-cli --user default -a'bqqkYdb@ggdpX60f'TTL verify:sentinel:string -1# 表示永不过期| 环境 | 命令 | 实际结果 |
|---|---|---|
| 分片集群 | TTL verify:cluster:string | ✅ -1 (永不过期) |
| 哨兵环境 | TTL verify:sentinel:string | ✅ -1 (永不过期) |
3.6 其他常用Key操作命令
| 命令 | 分片集群结果 | 哨兵环境结果 | 说明 |
|---|---|---|---|
| RANDOMKEY | key:000000042554 | - | 随机返回一个key |
| EXISTS verify:cluster:string | 1 | - | key存在返回1 |
| OBJECT ENCODING verify:cluster:string | embstr | - | 底层编码方式 |
| STRLEN verify:cluster:string | 27 | - | 字符串长度 |
| GET verify:cluster:string | 集群模式字符串测试 | - | 获取值 |
| HGETALL verify:sentinel:hash | - | name,李四,age,30,city,上海 | 获取hash所有字段 |
| ZRANGE verify:cluster:zset 0 -1 WITHSCORES | player2,85,player3,92,player1,100 | - | 有序集合范围查询 |
实际执行示例:
# RANDOMKEY - 随机获取一个key$ kubectlexec-n qfusion-admin drc-redis-2ffca4ed-0-0 -c redis --\redis-cli --user default -a'ff23@PfGnbgifklf'-c RANDOMKEY key:000000042554# EXISTS - 检查key是否存在$ kubectlexec-n qfusion-admin drc-redis-2ffca4ed-0-0 -c redis --\redis-cli --user default -a'ff23@PfGnbgifklf'-c EXISTS verify:cluster:string1# OBJECT ENCODING - 查看内部编码$ kubectlexec-n qfusion-admin drc-redis-2ffca4ed-0-0 -c redis --\redis-cli --user default -a'ff23@PfGnbgifklf'-c OBJECT ENCODING verify:cluster:string embstr# STRLEN - 字符串长度$ kubectlexec-n qfusion-admin drc-redis-2ffca4ed-0-0 -c redis --\redis-cli --user default -a'ff23@PfGnbgifklf'-c STRLEN verify:cluster:string27# HGETALL - 获取hash所有字段$ kubectlexec-n qfusion-admin drc-redis-147885f8-0 -c redis --\redis-cli --user default -a'bqqkYdb@ggdpX60f'HGETALL verify:sentinel:hash1)"name"2)"李四"3)"age"4)"30"5)"city"6)"上海"# ZRANGE - 有序集合范围查询$ kubectlexec-n qfusion-admin drc-redis-2ffca4ed-0-0 -c redis --\redis-cli --user default -a'ff23@PfGnbgifklf'-c ZRANGE verify:cluster:zset0-1 WITHSCORES1)"player2"2)"85"3)"player3"4)"92"5)"player1"6)"100"四、验证结论
4.1 数据类型兼容性
✅五种数据类型在分片集群和哨兵环境均完全兼容
- STRING: ✅ 集群模式 ✅ 哨兵模式
- HASH: ✅ 集群模式 ✅ 哨兵模式
- LIST: ✅ 集群模式 ✅ 哨兵模式
- SET: ✅ 集群模式 ✅ 哨兵模式
- ZSET: ✅ 集群模式 ✅ 哨兵模式
4.2 关键差异
| 特性 | 分片集群 | 哨兵模式 |
|---|---|---|
| KEYS命令 | ❌ 已禁用 | ❌ 已禁用 |
| SCAN命令 | ❌ 已禁用 | ❌ 已禁用 |
| DBSIZE命令 | ✅ 可用 | ✅ 可用 |
| TYPE命令 | ✅ 可用 | ✅ 可用 |
| TTL命令 | ✅ 可用 | ✅ 可用 |
| 连接参数 | 需要-c参数 | 不需要 |
| 数据分布 | 自动分片 | 主从复制 |
4.3 命令可用性总结
| 命令类别 | 命令 | 分片集群 | 哨兵环境 | 生产可用 |
|---|---|---|---|---|
| 查看总数 | DBSIZE | ✅ 33378 | ✅ 5 | ✅ 推荐 |
| 遍历查询 | KEYS pattern | ❌ 已禁用 | ❌ 已禁用 | ❌ 安全风险 |
| 遍历查询 | SCAN cursor | ❌ 已禁用 | ❌ 已禁用 | ✅ 通常推荐 |
| 类型查询 | TYPE key | ✅ string | ✅ string | ✅ 安全 |
| 过期查询 | TTL key | ✅ -1 | ✅ -1 | ✅ 安全 |
| 随机key | RANDOMKEY | ✅ 随机key | - | ✅ 安全 |
| 存在检查 | EXISTS key | ✅ 1 | - | ✅ 安全 |
| 内部编码 | OBJECT ENCODING | ✅ embstr | - | ✅ 安全 |
4.4 建议
- 生产环境安全配置:KEYS和SCAN命令已被禁用,这是出于安全考虑的配置
- 替代方案:
- 使用应用层维护key索引
- 通过业务逻辑追踪数据
- 使用DBSIZE监控总体key数量
- 集群模式连接:连接时必须使用
-c参数启用集群模式 - 可用命令:TYPE、TTL、EXISTS、RANDOMKEY、OBJECT等命令均可正常使用
五、验证命令清单
连接方式
# 设置kubeconfigexportKUBECONFIG=/bpx/.148-admin.conf# 分片集群连接(需要 -c 参数)kubectlexec-n qfusion-admin drc-redis-2ffca4ed-0-0 -c redis --\redis-cli --user default -a'ff23@PfGnbgifklf'-c# 哨兵环境连接(不需要 -c 参数)kubectlexec-n qfusion-admin drc-redis-147885f8-0 -c redis --\redis-cli --user default -a'bqqkYdb@ggdpX60f'注意:需要在Pod中指定容器
-c redis,因为Redis Pod包含多个容器
Key管理命令实际执行示例
# 1. 查看key总数(推荐)kubectlexec-n qfusion-admin drc-redis-2ffca4ed-0-0 -c redis --\redis-cli --user default -a'ff23@PfGnbgifklf'-c DBSIZE# 2. 查看所有key(已禁用)kubectlexec-n qfusion-admin drc-redis-2ffca4ed-0-0 -c redis --\redis-cli --user default -a'ff23@PfGnbgifklf'-c KEYS"verify:*"# 返回: ERR unknown command# 3. 增量遍历key(已禁用)kubectlexec-n qfusion-admin drc-redis-2ffca4ed-0-0 -c redis --\redis-cli --user default -a'ff23@PfGnbgifklf'-c SCAN0MATCH"verify:*"# 返回: ERR unknown command# 4. 查看key类型(可用)kubectlexec-n qfusion-admin drc-redis-2ffca4ed-0-0 -c redis --\redis-cli --user default -a'ff23@PfGnbgifklf'-c TYPE verify:cluster:string# 5. 查看key过期时间(可用)kubectlexec-n qfusion-admin drc-redis-2ffca4ed-0-0 -c redis --\redis-cli --user default -a'ff23@PfGnbgifklf'-c TTL verify:cluster:string# 6. 随机获取一个key(可用)kubectlexec-n qfusion-admin drc-redis-2ffca4ed-0-0 -c redis --\redis-cli --user default -a'ff23@PfGnbgifklf'-c RANDOMKEY# 7. 检查key是否存在(可用)kubectlexec-n qfusion-admin drc-redis-2ffca4ed-0-0 -c redis --\redis-cli --user default -a'ff23@PfGnbgifklf'-c EXISTS verify:cluster:string# 8. 查看内部编码(可用)kubectlexec-n qfusion-admin drc-redis-2ffca4ed-0-0 -c redis --\redis-cli --user default -a'ff23@PfGnbgifklf'-c OBJECT ENCODING verify:cluster:string# 9. 字符串长度(可用)kubectlexec-n qfusion-admin drc-redis-2ffca4ed-0-0 -c redis --\redis-cli --user default -a'ff23@PfGnbgifklf'-c STRLEN verify:cluster:string# 10. Hash获取所有字段(可用)kubectlexec-n qfusion-admin drc-redis-147885f8-0 -c redis --\redis-cli --user default -a'bqqkYdb@ggdpX60f'HGETALL verify:sentinel:hash# 11. 有序集合范围查询(可用)kubectlexec-n qfusion-admin drc-redis-2ffca4ed-0-0 -c redis --\redis-cli --user default -a'ff23@PfGnbgifklf'-c ZRANGE verify:cluster:zset0-1 WITHSCORES命令快速参考
| 命令 | 语法 | 可用性 | 用途 |
|---|---|---|---|
| DBSIZE | DBSIZE | ✅ | 查看当前数据库key总数 |
| KEYS | KEYS pattern | ❌ | 查看匹配的所有key(已禁用) |
| SCAN | SCAN cursor [MATCH] [COUNT] | ❌ | 增量遍历key(已禁用) |
| TYPE | TYPE key | ✅ | 查看key的数据类型 |
| TTL | TTL key | ✅ | 查看key的剩余过期时间 |
| RANDOMKEY | RANDOMKEY | ✅ | 随机返回一个key |
| EXISTS | EXISTS key | ✅ | 检查key是否存在 |
| OBJECT | OBJECT subcommand key | ✅ | 查看key的内部信息 |
| STRLEN | STRLEN key | ✅ | 获取字符串长度 |
| GET | GET key | ✅ | 获取字符串值 |
| HGETALL | HGETALL key | ✅ | 获取hash所有字段 |
| ZRANGE | ZRANGE key start stop [WITHSCORES] | ✅ | 有序集合范围查询 |