首页/数据/数据库速查/TYPE 判断键类型
Redis 命令96 条

TYPE 判断键类型

返回键的数据类型:string/list/set/zset/hash/stream;对不存在键返回 none。调试 WRONGTYPE 问题的常见入口。

数据库速查数据更新于 2026-10-13

TYPE 是什么

TYPE 返回某个键的数据类型,取值包括 string、list、set、zset、hash、stream,键不存在时返回 none。它是排查 WRONGTYPE 报错的第一站:当同一个键被两条业务线用不同结构写入时,后写的一方会覆盖原数据或者直接报错,用 TYPE 看一眼就能确认类型有没有被别的路径改写过。它自身开销极低,可以放心在生产环境直接调用,也适合写进巡检脚本做批量抽样。

基本信息

语法TYPE key
返回值string、list、set、zset、hash、stream 或 none
复杂度O(1),可以放心用于排查
典型用途排查 WRONGTYPE、数据巡检
配套命令OBJECT ENCODING 查看内部编码与内存优化

典型使用场景

  • 排查报错信息里的 WRONGTYPE 到底来自哪里
  • 数据巡检,确认键的类型符合设计
  • 确认某次发布没有把键的类型改掉
  • 排查多个业务共用同一键名造成的类型冲突
  • 上线前抽查关键键的数据结构

类型判断示例

类型判断示例
SET s v
TYPE s            # string
RPUSH l a
TYPE l            # list
ZADD z 1 a
TYPE z            # zset
HSET h f v
TYPE h            # hash
XADD st * k v
TYPE st           # stream
TYPE missing      # none:键不存在
OBJECT ENCODING s # embstr:查看内部编码

返回值对照

返回值对应结构常见用途
string字符串缓存值、计数、序列化对象
list列表队列与栈结构
set集合去重与成员判断
zset有序集合排行榜与延时队列
hash哈希对象属性的字段集合
stream流消息队列与消费组
遇到 WRONGTYPE 报错时,先用 TYPE 检查类型是否被别的写入路径改过,再核对键名规范,往往能当场定位到冲突的业务线,不必逐行翻代码。
TYPE 只给出大类,想看内部编码与内存优化效果要用 OBJECT ENCODING,例如小整数会被优化成 int 编码,节省可观的内存。内部编码还会随数据规模自动变化,小集合从紧凑编码切换成哈希表编码的过程,也解释了为什么内存增长有时会突然变快。
同一个键被不同业务用不同类型写入属于设计缺陷:键名规范要统一,命名空间与用途在项目初期就约定清楚,事后治理的成本会高得多。

易错点

  • 把 TYPE 返回 none 当异常处理:键不存在本来就是正常状态
  • 发现类型不对就删键重建:先确认还有哪些业务在读写这个键
  • 键名共用不做隔离:类型冲突会在流量上来之后突然爆发
  • 上线前不抽查类型:结构不符合设计的键会长期留在线上

数据来源与参考

  • Redis 官方文档: TYPE

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌