redisTempLate的序列化改进

java中使用redis 的template对数据进行存储,默认使用字节码序列化数据,可读性差,内存消耗较大。如图

 为了解决以上问题,提供两种主要方案:

1.自定义template序列化容器,也就是修改redistemplate序列化容器为GenericJackson2JsonRedisSerializer

具体实现就是在spring中加入redisConfig,具体代码如下:

package com.example.config;

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.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializer;
@Configuration
public class RedisConfig {
    @Bean
    public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory connectionFactory){
         //创建redistemplate对象
         RedisTemplate<String,Object> redisTemplate=new RedisTemplate<>();
         //设置连接工厂
        redisTemplate.setConnectionFactory(connectionFactory);
        //创建json序列化工具
        GenericJackson2JsonRedisSerializer serializer=new GenericJackson2JsonRedisSerializer();
        //设置key序列化
        redisTemplate.setKeySerializer(RedisSerializer.string());
        redisTemplate.setHashKeySerializer(RedisSerializer.string());
        //设置value序列化
        redisTemplate.setValueSerializer(serializer);
        redisTemplate.setHashValueSerializer(serializer);


        return redisTemplate;
    }

}

2  使用stringredistemplate类 替代template,它的key和value设置默认都是string类型进行序列化,不需要 我们自定义template序列化容器

 @Test
    void test(){
        stringRedisTemplate.opsForValue().set("name:2","虎哥");
        System.out.println(stringRedisTemplate.opsForValue().get("name:2"));
    }

效果如下:

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值