向Redis中存入JSON格式数据,设置全局RedisTemplate序列号和和局部序列号

在使用Redis时,我们一般都会使用到SpringDataRedis,这个依赖给了我们两个使用Redis的模板,RedisTemplate和StringRedisTemplate!RedisTemplate的是基于JDK字节码的序列号方式,StringRedisTemplate是基于String的序列号方式。
这里我给大家推荐一个基于可视化的JSON序列化方式,使用后只需要存入一个基本对象,Redis会自动编译成String类型的JSON字符串,
在这里插入图片描述这样对于前端的使用上也非常友好,而且可视化能力也非常高,具体步骤如下:
基本的redis配置我就不多说了。网上很多教程了。

一,添加一个SpringBoot的config类型的文件

在这里插入图片描述

二、添加如下代码
/**
     * redisTemplate 序列化使用的jdkSerializeable, 存储二进制字节码, 所以自定义序列化类
     * @param redisConnectionFactory
     * @return
     */
    @Bean
    public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(redisConnectionFactory);

        // 使用Jackson2JsonRedisSerialize 替换默认序列化
        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);

        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);

        jackson2JsonRedisSerializer.setObjectMapper(objectMapper);

        // 设置value的序列化规则和 key的序列化规则
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        //jackson2JsonRedisSerializer就是JSON序列号规则,
        redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
        redisTemplate.afterPropertiesSet();
        return redisTemplate;
    }

这样就设置好了一个全局的序列化方式了,是不是很简单,序列化规则共有8中,需要其他的话可以网上自己查找一下。

接下来说一下局部使用时的步骤

一、操作之前添加序列号方式

比如这里我们将一个基本的User对象存入Redis时就可以这样写,

//将对象序列化为JOSN格式储存在Redis中
try {
	this.redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer<>(Users.class)); 
	this.redisTemplate.opsForValue().set(user.getUserAccount(), user, 30, TimeUnit.MINUTES);
} catch (Exception e) {
	System.out.println(e.getMessage());
	System.out.println("向Redis中存值报错");
	return null;
}finally {
	//释放连接
	RedisConnectionUtils.unbindConnection(redisTemplate.getConnectionFactory());
}
二、取值
//获取Redis中的对象
try {
	this.redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer<>(Users.class)); 
	user=(Users) this.redisTemplate.opsForValue().get(userAccount);
} catch (Exception e) {
	System.out.println("从Redis中取值报错");
	return null;
}finally {
	//释放连接
    RedisConnectionUtils.unbindConnection(redisTemplate.getConnectionFactory());
}

这里怎么感觉都是局部有点小麻烦,其实还可以封装一下,这里就大家自行发挥吧!!!

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值