redis WRONGTYPE Operation against a key holding the wrong kind of value 错误
这个错误是 Redis 返回的经典错误意思是你用错了数据类型。简单说就是你对一个 key 执行了它当前数据类型不支持的 Redis 命令。 举个例子看一眼就明白假设你执行了bashSET mykey hello这时mykey的数据类型是String。然后你执行bashLPUSH mykey world因为LPUSH只能用在List类型上但mykey是 StringRedis 就会直接报错textWRONGTYPE Operation against a key holding the wrong kind of value 为什么会出现这个错误根本原因只有一个你在开发过程中对同一个 key 使用了不同类型的数据操作导致类型冲突。常见场景场景说明缓存误用某个 key 原本存了字符串后面又当成 Hash / List 操作业务演化业务升级时改变了数据结构但未清理旧 key多模块共用 key不同服务或模块共用了同一个 key但用了不同的数据类型手动操作失误在 Redis CLI 中手动执行了错误命令 怎么解决第一步查看 key 的当前类型bashTYPE mykey或者看详细信息bashDEBUG OBJECT mykey第二步根据类型决定处理方式情况处理方式错误 key数据已废弃直接删除DEL mykey然后重新写入正确类型关键 key不可删除用正确类型命令读取修改代码使其与当前类型一致需要保留数据但类型错误使用正确的命令读取并转换后重新存储 实战排查流程Java 场景1. 查看当前类型bashredis-cli TYPE user:1001 hash2. 如果是 Hash却用了 String 命令比如GET需要改成HGET或HMGETbash HGETALL user:10013. 在 Java 代码中确保 Redis 操作类型匹配java// ❌ 错误类型不匹配 stringRedisTemplate.opsForValue().get(user:1001); // ✅ 正确如果是 Hash 类型 hashOperations.entries(user:1001);⚠️ 如何避免这个问题统一 key 的命名规范为不同类型加前缀比如str:user:1001字符串hash:user:1001哈希list:queue:xxx列表使用SET命令时带上类型标记编写防御性代码用TYPE命令检查类型后再操作或者捕获异常建立 Redis 数据字典维护 key 的命名规范和数据类型文档使用 Redis JSON 或结构化存储如果可能统一使用 Hash 或 JSON 格式减少类型混杂✅ 一句话总结这个错误是 Redis 在提醒你这个 key 里存的不是你以为的那个类型。用TYPE看一眼再决定是删除重建、还是改用正确的命令。如果你能告诉我报错的key 名称你执行的命令当前这个 key 预期存储的是什么类型数据

相关新闻

最新新闻

日新闻

周新闻

月新闻