redisTemplate根据键获取值时报错:java.io.EOFException: null

redisTemplate根据键获取值时报错:java.io.EOFException: null;

说明:
我要获取的信息在redis中的存储方式是hash类型
在这里插入图片描述原本代码:

    @Autowired
    public RedisTemplate redisTemplate;
 @GetMapping("getDeviceInfo")
    public void getDeviceInfo(){
    
`Object entries = redisTemplate.opsForHash().entries("data:last").get("259");``

}

执行后会报错:

Caused by: org.springframework.core.serializer.support.SerializationFailedException: Failed to deserialize payload. Is the byte array a result of corresponding serialization for DefaultDeserializer?; nested exception is java.io.EOFException
	at org.springframework.core.serializer.support.DeserializingConverter.convert(DeserializingConverter.java:78)
	at org.springframework.core.serializer.support.DeserializingConverter.convert(DeserializingConverter.java:36)
	at org.springframework.data.redis.serializer.JdkSerializationRedisSerializer.deserialize(JdkSerializationRedisSerializer.java:82)
	... 105 common frames omitted
Caused by: java.io.EOFException: null
	at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2353)
	at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2822)
	at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:805)
	at java.io.ObjectInputStream.<init>(ObjectInputStream.java:301)
	at org.springframework.core.ConfigurableObjectInputStream.<init>(ConfigurableObjectInputStream.java:65)
	at org.springframework.core.ConfigurableObjectInputStream.<init>(ConfigurableObjectInputStream.java:51)
	at org.springframework.core.serializer.DefaultDeserializer.deserialize(DefaultDeserializer.java:70)
	at org.springframework.core.serializer.support.DeserializingConverter.convert(DeserializingConverter.java:73)
	... 107 common frames omitted

尝试了网上各种办法,说是序列化的问题,尝试修改序列化内容:

//        // key序列化
        redisTemplate.setKeySerializer(new StringRedisSerializer());
//        //val实例化
        redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());

发现还是报这个错误。
最后发现在其他的一个类里面也封装了RedisTemplate ,但是由于封装的方法不能够满足我现在的业务要求,需要重新使用RedisTemplate 。就导致使用了两个RedisTemplate ,此时只需要将@Autowired改为@Resource(name = “stringRedisTemplate”),重新启动即可成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值