Redis - WRONGTYPE Operation against a key holding the wrong kind of value

  • 2016-05-19
  • 浏览 (1086)

今天跑 Redis 时报下面一个异常:
WRONGTYPE Operation against a key holding the wrong kind of value
发现是因为同一个键名被不同类型的数据操作使用造成的。

因为 Redis 为了确保只有指定类型的键可以执行某些特定的命令,在执行一个类型特定的命令之前,Redis 会先检查输入键的类型是否正确,然后再决定是否执行给定的命令。

类型特定命令所进行的类型检查是通过 redisObject 结构的 type 属性来实现的:
  •     在执行一个类型特定命令之前, 服务器会先检查输入数据库键的值对象是否为执行命令所需的类型, 如果是的话, 服务器就对键执行指定的命令;
  •     否则, 服务器将拒绝执行命令, 并向客户端返回一个类型错误。
举个例子,对于 LLEN 命令来说:
  •     在执行 LLEN 命令之前,服务器会先检查输入数据库键的值对象是否为列表类型,也即是,检查值对象 redisObject 结构 type 属性的值是否为 REDIS_LIST ,如果是的话,服务器就对键执行 LLEN 命令;
  •     否则的话,服务器就拒绝执行命令并向客户端返回一个类型错误;
0  赞