在使用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());
}

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

GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e 4 个月前
8c391e04 6 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐