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获取就可以了。
存储方法:
使用工具查看: