RedisTemplate設置redis的key時出現\xac\xed\x00\x05t\x00\x0f前綴


1、問題描述

使用redisTemplate設置redis的key-value,程序運行沒有問題,但是卻在redis客戶端查不到設置的key-value。

 

 

2、產生原因

出現這種亂碼前綴的原因是沒有進行序列化,因此導致在傳輸過程出現亂碼問題。

RedisTemplate類中默認是沒有設置序列化的。

 因此需要設置一下RedisTemplate的序列化方式

3、解決方法

設置RedisTemplate的序列化方式

常見的序列化方式

 修改后的代碼

@Test
    public void testRedis() {
        //使用StringRedisSerializer序列化方式(一般如果key-value都是string的話,使用StringRedisSerializer就可以)
        RedisSerializer stringSerializer = new StringRedisSerializer();
        //key序列化方式
        redisTemplate.setKeySerializer(stringSerializer);
        //String的序列化方式
        redisTemplate.setStringSerializer(stringSerializer);
        //value序列化方式
        redisTemplate.setValueSerializer(stringSerializer);
        //hash key序列化方式
        redisTemplate.setHashKeySerializer(stringSerializer);
        //hash value序列化方式
        redisTemplate.setHashValueSerializer(stringSerializer);
        redisTemplate.opsForValue().set("notify:00123456", "2022-01-01");
    }

 在redis客戶端可以查到了

 

 

當然也可以把RedisTemplate序列化配置放到configure里面,做一個全局配置。

package xxx

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

/**
 * @ClassName RedisConfig
 * @Version 1.0
 * @Author Wulc
 * @Date 2022-01-11 16:41
 * @Description 修改redis序列化
 */
@Configuration
public class RedisConfig {
    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisTemplate redisTemplate) {
        RedisSerializer stringSerializer = new StringRedisSerializer();
        redisTemplate.setKeySerializer(stringSerializer);
        redisTemplate.setStringSerializer(stringSerializer);
        redisTemplate.setValueSerializer(stringSerializer);
        redisTemplate.setHashKeySerializer(stringSerializer);
        redisTemplate.setHashValueSerializer(stringSerializer);
        return redisTemplate;
    }
}

4、參考資料

RedisTemplate操作redis時,key值出現\xac\xed\x00\x05t\x00前綴_u011345756的專欄-CSDN博客_\xac\xed\x00\x05t\x00

 SpringBoot項目使用RedisTemplate設置序列化方式 - 只有芸知道 - 博客園

 Spring Cloud里修改Redis的序列化方式 - code-G - 博客園


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM