news 2026/4/18 2:04:45

Redis 数据类型验证报告

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Redis 数据类型验证报告

目录

  • 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验证结果
STRINGSET/GET/TYPEverify:cluster:string✅ 通过
HASHHSET/HGETALL/TYPEverify:cluster:hash✅ 通过
LISTLPUSH/LRANGE/TYPEverify:cluster:list✅ 通过
SETSADD/SMEMBERS/TYPEverify:cluster:set✅ 通过
ZSETZADD/ZRANGE/TYPEverify: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验证结果
STRINGSET/GET/TYPEverify:sentinel:string✅ 通过
HASHHSET/HGETALL/TYPEverify:sentinel:hash✅ 通过
LISTLPUSH/LRANGE/TYPEverify:sentinel:list✅ 通过
SETSADD/SMEMBERS/TYPEverify:sentinel:set✅ 通过
ZSETZADD/ZRANGE/TYPEverify: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
环境命令实际结果
分片集群DBSIZE33,378
哨兵环境DBSIZE5

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操作命令

命令分片集群结果哨兵环境结果说明
RANDOMKEYkey:000000042554-随机返回一个key
EXISTS verify:cluster:string1-key存在返回1
OBJECT ENCODING verify:cluster:stringembstr-底层编码方式
STRLEN verify:cluster:string27-字符串长度
GET verify:cluster:string集群模式字符串测试-获取值
HGETALL verify:sentinel:hash-name,李四,age,30,city,上海获取hash所有字段
ZRANGE verify:cluster:zset 0 -1 WITHSCORESplayer2,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✅ 安全
随机keyRANDOMKEY✅ 随机key-✅ 安全
存在检查EXISTS key✅ 1-✅ 安全
内部编码OBJECT ENCODING✅ embstr-✅ 安全

4.4 建议

  1. 生产环境安全配置:KEYS和SCAN命令已被禁用,这是出于安全考虑的配置
  2. 替代方案
    • 使用应用层维护key索引
    • 通过业务逻辑追踪数据
    • 使用DBSIZE监控总体key数量
  3. 集群模式连接:连接时必须使用-c参数启用集群模式
  4. 可用命令: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

命令快速参考

命令语法可用性用途
DBSIZEDBSIZE查看当前数据库key总数
KEYSKEYS pattern查看匹配的所有key(已禁用)
SCANSCAN cursor [MATCH] [COUNT]增量遍历key(已禁用)
TYPETYPE key查看key的数据类型
TTLTTL key查看key的剩余过期时间
RANDOMKEYRANDOMKEY随机返回一个key
EXISTSEXISTS key检查key是否存在
OBJECTOBJECT subcommand key查看key的内部信息
STRLENSTRLEN key获取字符串长度
GETGET key获取字符串值
HGETALLHGETALL key获取hash所有字段
ZRANGEZRANGE key start stop [WITHSCORES]有序集合范围查询

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/28 10:33:36

麻了!00后在西二旗当街发简历推销自己?

小伙伴们好,我是小嬛。专注于人工智能、计算机视觉领域相关分享研究。【目标检测、图像分类、图像分割、目标跟踪等项目都可做,相关领域论文辅导也可以找我;需要的可联系(备注来意)】前两天在某音刷到一个视频&#xf…

作者头像 李华
网站建设 2026/4/11 14:35:51

ES安装配置:Docker Compose应用完整示例

5分钟搭建Elasticsearch集群:Docker Compose实战指南你有没有遇到过这样的场景?项目刚启动,后端同事说“需要连ES查日志”,前端同学要验证搜索建议,测试组等着跑自动化用例——可本地连个像样的Elasticsearch环境都没有…

作者头像 李华
网站建设 2026/3/25 6:38:57

Hologres Dynamic Table 在淘天价格力的业务实践

作者: 闵加坤 | 淘天集团价格平台开发工程师 业务介绍 淘天价格力团队作为平台价格治理的核心部门,承载着淘宝天猫全域商品价格管理的重要职责。团队掌握着淘内外所有商品的全量价格信息,包括商品原价、券后价等多维度价格数据,…

作者头像 李华
网站建设 2026/4/13 0:15:39

树莓派更新失败提示命令未找到?入门详解

树莓派更新失败提示“命令未找到”?别急,一文带你从根上解决问题 你有没有遇到过这样的情况:刚给树莓派通电,SSH连上去准备更新系统,结果敲下一行熟悉的命令: sudo apt update终端却冷冷地回了你一句&am…

作者头像 李华
网站建设 2026/4/3 7:57:20

YOLO26优化:卷积魔改 | 轻量化改进 | 分布移位卷积(DSConv),提高卷积层的内存效率和速度

💡💡💡本文改进内容: YOLO26如何魔改卷积进一步提升检测精度?提出了一种卷积的变体,称为DSConv(分布偏移卷积),其可以容易地替换进标准神经网络体系结构并且实现较低的存储器使用和较高的计算速度。 DSConv将传统的卷积内核分解为两个组件:可变量化内核(VQK)和分…

作者头像 李华