SpringBoot整合Redis之编写RedisConfig

 更新时间:2022年06月23日 15:50:55   作者:小目标青年  
RedisConfig需要对redis提供的两个Template的序列化配置,所以本文为大家详细介绍了SpringBoot整合Redis如何编写RedisConfig,需要的可以参考下

编写RedisConfig首先我们要明白RedisConfig中需要包含什么,首先看看我们直接使用RedisTemplate的问题,我们就知道RedisConfig要包含什么了,我们在RedisConfig需要规定好根据不同的查询生成的key,key和value的序列化和反序列化

我们在RedisConfig中配置的自定义方法,最终通过注解引用的就是我们自定义的方法

RedisConfig.java   :     

对redis提供的两个Template的序列化配置

/**
 * @Author: JCccc
 * @CreateTime: 2018-09-11
 * @Description:
 */
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
 
@Configuration
@EnableCaching
public class RedisConfig {
           @Bean
        public CacheManager cacheManager(RedisConnectionFactory connectionFactory) {
            RedisCacheConfiguration cacheConfiguration =
                    defaultCacheConfig()
                            .disableCachingNullValues()
                            .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new Jackson2JsonRedisSerializer(Object.class)));
            return RedisCacheManager.builder(connectionFactory).cacheDefaults(cacheConfiguration).build();
 
//            RedisCacheManager rcm=RedisCacheManager.create(connectionFactory);
//
//            return rcm;
 
        }
 
 
        @Bean
        public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
            RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
            redisTemplate.setConnectionFactory(factory);
            Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
            ObjectMapper om = new ObjectMapper();
            om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
            om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
            jackson2JsonRedisSerializer.setObjectMapper(om);
            //序列化设置 ,这样为了存储操作对象时正常显示的数据,也能正常存储和获取
            redisTemplate.setKeySerializer(new StringRedisSerializer());
            redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
            redisTemplate.setHashKeySerializer(new StringRedisSerializer());
            redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
            return redisTemplate;
        }
    @Bean
    public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory factory) {
        StringRedisTemplate stringRedisTemplate = new StringRedisTemplate();
        stringRedisTemplate.setConnectionFactory(factory);
        return stringRedisTemplate;
    }
 
 
 
}

补充

redisconfig配置与使用

配置类:

@Configuration   // 定义一个配置类
public class RedisConfig {
    //object object

    /*
    * 用于redisApi
    * */
    @Bean
    public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        RedisTemplate<Object, Object> template = new RedisTemplate();
        template.setConnectionFactory(redisConnectionFactory);
        // 使用JSON格式序列化对象,对缓存数据key和value进行转换
        Jackson2JsonRedisSerializer jacksonSeial = new Jackson2JsonRedisSerializer(Object.class);
        // 解决查询缓存转换异常的问题
        ObjectMapper om = new ObjectMapper();
        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        jacksonSeial.setObjectMapper(om);

        // 设置RedisTemplate模板API的序列化方式为JSON
        template.setDefaultSerializer(jacksonSeial);
        return template;
    }
 }

使用方式:

1. 业务类中进行注入:

@Autowired
RedisTemplate redisTemplate;

2. 使用redisTemplate的内置方法:

2.1 获取redis中的数据

Object object = redisTemplate.opsForValue().get("course_" + id);

2.2 插入数据

redisTemplate.opsForValue().set("course_" + id, course, 1, TimeUnit.DAYS);

到此这篇关于SpringBoot整合Redis之编写RedisConfig的文章就介绍到这了,更多相关SpringBoot编写RedisConfig内容请搜索得牛网以前的文章或继续浏览下面的相关文章希望大家以后多多支持得牛网!

相关文章

  • Java 并发编程:volatile的使用及其原理解析

    Java 并发编程:volatile的使用及其原理解析

    下面小编就为大家带来一篇Java 并发编程:volatile的使用及其原理解析。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-05-05
  • ssm框架+PageHelper插件实现分页查询功能

    ssm框架+PageHelper插件实现分页查询功能

    今天小编教大家如何通过ssm框架+PageHelper插件实现分页查询功能,首先大家需要新建一个maven工程引入jar包,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-06-06
  • Spring Boot产生环形注入的解决方案

    Spring Boot产生环形注入的解决方案

    这篇文章主要介绍了Spring Boot产生环形注入的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • java 实现将一个string保存到txt文档中

    java 实现将一个string保存到txt文档中

    今天小编就为大家分享一篇java 实现将一个string保存到txt文档中的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • SpringBoot配置数据库密码加密的实现

    SpringBoot配置数据库密码加密的实现

    这篇文章主要介绍了SpringBoot配置数据库密码加密的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • JAVA对象和字节数组互转操作

    JAVA对象和字节数组互转操作

    这篇文章主要介绍了JAVA对象和字节数组互转操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • Java装饰者模式的深入了解

    Java装饰者模式的深入了解

    这篇文章主要为大家介绍了Java装饰者模式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • spring-cloud入门之spring-cloud-config(配置中心)

    spring-cloud入门之spring-cloud-config(配置中心)

    这篇文章主要介绍了spring-cloud入门之spring-cloud-config(配置中心),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • Java循环队列与非循环队列的区别总结

    Java循环队列与非循环队列的区别总结

    今天给大家带来的是关于Java的相关知识总结,文章围绕着Java循环队列与非循环队列的区别展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • java使用elasticsearch分组进行聚合查询过程解析

    java使用elasticsearch分组进行聚合查询过程解析

    这篇文章主要介绍了java使用elasticsearch分组进行聚合查询过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02

最新评论