SpringBoot使用Redis遇到的问题
在项目中使用redis的list遇到多个问题,部分报错信息如下
WRONGTYPE Operation against a key holding the wrong kind of value
Error: no such key
等等
开始是通过RedisTemplate获取key对应的值时一直为null, 获取list的大小也一直是零,但是我手动在Redis中添加list的数据。
后来用StringRedisTemplate报了其他的错。
原来StringRedisTemplate和RedisTemplate从Redis中读写的方式不同,他们采用不同的序列化方法,你必须用StringRedisTemplate写入的才能用StringRedisTemplate读取,RedisTemplate写入的必须用RedisTemplate读取。而我手动添加的导致都不能读取,而且汇报各种异常。
你使用RedisTemplate添加的数据用Redis的命令查看后会发现有看不懂的乱码,这就是因为RedisTemplate加了序列化的原因。
不加序列化Java工具无法将Redis中的数据转化为对象。
解决方法:在项目中添加Redis的数据,不要手动Redis命令添加,要通过RedisTemplate添加。