redis乱码问题

一、问题起因:

我在对redis进行存储数据的时候,存储到redis里面的数据为这样的

redis乱码问题

这里我并没有理会,然后我再获取其中的一个值的时候,在redis的客户端进行操作的时候能获取到里面的值

 redis乱码问题

然后再用java的方式进行获取,发现一直返回Nul,表示很无语

 

  @Test
    public void createOfficialLetter() {
        boolean officialLetter = generateProjectPdfService.createOfficialLetter("2021101711570004100");
        Assert.assertTrue(officialLetter);
    }

刚开始一直以为是redis库连接错了,但是仔细核对后发现确实是当前的库,并没有错。

这个时候只能猜到传的key确实在redis中不存在,但是我是从库中复制过来的key,不可能不存在,那么只有一种情况,就是乱码 了。然后对其进行解决

二、问题解决

package com.dfec.project.config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;

/**
 * @program: rf-project
 * @description: Redis配置
 * @author: trg
 * @create: 2021-10-19 16:14
 */
@Configuration
public class RedisConfigurtion {
    @Autowired
    private RedisTemplate redisTemplate;

    /**
     * 解决Redis乱码
     *
     * @return
     */
    @Bean
    public RedisTemplate<String, Object> stringSerializerRedisTemplate() {
        RedisSerializer<String> stringSerializer = new StringRedisSerializer();
        redisTemplate.setKeySerializer(stringSerializer);
        redisTemplate.setValueSerializer(stringSerializer);
        redisTemplate.setHashKeySerializer(stringSerializer);
        redisTemplate.setHashValueSerializer(stringSerializer);
        return redisTemplate;
    }

}

再运行代码,则返回了结果。

问题解决

三、总结

如果我们对整个流程做完了检查,坚信自己的操作流程是对的,那么就是框架在作祟。这也就需要我们对框架有一个更深层次的认识了。

上一篇:基于Redis setNX命令实现分布式加解锁


下一篇:RedisTemplateConfiguration