Redis 的异常消息:StackExchange.Redis.RedisServerException:“WRONGTYPE Operation against a key holding the wrong kind of value”
最近一个较早的项目新增一些功能,业务中服务端需要在token中自动获取用户相关信息的操作,项目中已经封装了redis帮助类,获取用户信息使用的方法如下:

接口开发完成后,测试过程中开始为了方便,使用配置过滤token验证,如下:

IsVerifyToken在配置文件中设置为0,所以没有发现获取token异常问题,当部署本地给前端测试时,才发现总是获取不到用户相关信息的问题,经测试报了文章开头的异常,报错异常方法:

在var hashFields = redisConnection.GetDatabase().HashGetAll(key);执行此句的时候报错,经过一番测试查找,原来是存储类型的问题。
以下是检索键值的命令:
- 如果值是字符串类型 -> GET
<key> - 如果值是哈希类型 -> HGET 或 HMGET 或 HGETALL
<key> - 如果值是列表类型 -> lrange
<key> <start> <end> - 如果值是集合类型 -> smembers
<key> - 如果值是排序集类型 -> ZRANGEBYSCORE
<key> <min> <max> - 如果值是流类型 -> xread count
<count>streams<key><ID>
由于项目与一些三方有合作,此项目没有登录接口,使用三方登录并按照三方规则验证token,(时间有些久,部分业务功能有些记不清楚了)由于本机存储为字符串类型的json串,而这个老项目实际存储的类型为哈希类型,所以使用在本机的token出现了异常,于是本机redis创建哈希类型的数据,在使用新创建的key获取就可以了。
存储方法:

使用工具查看:


文章描述了一个开发项目中遇到的问题,即在尝试从Redis获取用户信息时,由于键值类型不匹配导致的异常。原来,项目早期将数据存储为哈希类型,而在新功能中误以为是字符串类型JSON。在调整为正确的方式(使用`HashGetAll`)后,问题得到解决。解决方案是检查并确保使用与存储类型相符的操作命令。
462

被折叠的 条评论
为什么被折叠?



