首页 > 编程语言 > 详细

java处理redis的几种序列化策略

时间:2020-09-07 21:18:51      阅读:362      评论:0      收藏:0      [点我收藏+]

简单记录一下java处理redis的几种序列化策略,这里使用的环境是springboot 2.0.4

springboot中提供了StringRedisTemplate和RedisTemplate两种序列化类,它们都只能读自己存的数据,即数据互不相通。

主要区别如下:

1、采用的序列化策略不同

StringRedisTemplate采用的是String的序列化策略;RedisTemplate默认采用的是jdk的序列化策略

2、存的数据形式不同

StringRedisTemplate存的是字符串;RedisTemplate存的是字节数组,在redis-cli中看好像乱码

3、使用范围不同

StringRedisTemplate只能处理字符串类型的数据,如果存取复杂的对象,又不想做额外的处理,最好用RedisTemplate

改写RedisTemplate

我们可以改写RedisTemplate的序列化策略,比如使用Jackson2JsonRedisSerializer(还有很多),如下:

@Configuration
public class RedisConfig {

    @Bean
    @ConditionalOnMissingBean(name = "redisTemplate")
    public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        
        RedisTemplate<Object, Object> template = new RedisTemplate<>();
        
        //使用fastjson序列化
        Jackson2JsonRedisSerializer<Object> fastJsonRedisSerializer = new Jackson2JsonRedisSerializer<Object>(Object.class);
        //value的序列化采用fastJsonRedisSerializer
        template.setValueSerializer(fastJsonRedisSerializer);
        template.setHashValueSerializer(fastJsonRedisSerializer);
        
        //key的序列化采用StringRedisSerializer
        template.setKeySerializer(new StringRedisSerializer());
        template.setHashKeySerializer(new StringRedisSerializer());
 
        template.setConnectionFactory(redisConnectionFactory);
        return template;
    }
}

与默认的JdkSerializationRedisSerializer相比,好处之一是存取对象不用实现Serializable接口,Jackson2Json中已做处理。

使用示例:

... ...
@Autowired
private RedisTemplate<Object,Object> redisTemplate;

public void testSetUser() {
    User user=new User(1,"哈哈",20);
    redisTemplate.opsForValue().set("user",user);
}
    
public void testGetUser() {
    User user=(User)redisTemplate.opsForValue().get("user");
    System.out.println(user.getName());
}

 

 

  

 

java处理redis的几种序列化策略

原文:https://www.cnblogs.com/javasl/p/13629149.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!