文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

SpringBoot整合Redis之怎么编写RedisConfig

2023-07-02 12:10

关注

这篇文章主要介绍了SpringBoot整合Redis之怎么编写RedisConfig的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot整合Redis之怎么编写RedisConfig文章都会有所收获,下面我们一起来看看吧。

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

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

RedisConfig.java   :     

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

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@EnableCachingpublic 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        @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;    } }

使用方式:

业务类中进行注入:

@AutowiredRedisTemplate redisTemplate;

使用redisTemplate的内置方法:

1 获取redis中的数据

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

2 插入数据

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

关于“SpringBoot整合Redis之怎么编写RedisConfig”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“SpringBoot整合Redis之怎么编写RedisConfig”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯