Redis实现SpringBoot集成Redis多数据源
背景
有些时候在一个项目里,由于业务问题,可能仅仅操作一个Redis数据源已经不能满足,比如某个运营系统,对接着多个不同的服务,处理数据时又不想通过远程调用,那只能增加一个数据源来解决问题,像MySQL的多数据源一样。配置示例
这里连接池选用的是lettuce。redis:host:localhostport:6379password:123456timeout:60000database:10lettuce:pool:minidle:0maxidle:10maxwait:1maxactive:200timebetweenevictionruns:1redislive:host:localhostport:6379password:123456database:0实现代码
关于序列化使用的是jackson。
以下提供了创建RedisTemplate以及StringRedisTemplate。
关于二者的区别:两者的关系是StringRedisTemplate继承RedisTemplate。两者的数据是不共通的;也就是说StringRedisTemplate只能管理StringRedisTemplate里面的数据,RedisTemplate只能管理RedisTemplate中的数据。SDR默认采用的序列化策略有两种,一种是String的序列化策略,一种是JDK的序列化策略。StringRedisTemplate默认采用的是String的序列化策略,保存的key和value都是采用此策略序列化保存的。RedisTemplate默认采用的是JDK的序列化策略,保存的key和value都是采用此策略序列化保存的。pRedisLettuce连接实例配置authorzhengshangjinversion1。0。0since1。0。0createdon20200423ConfigurationEnableCachingpublicclassRedisLettuceConfig{live数据源Value({spring。redislive。host})privateStringredisLiveHost;Value({spring。redislive。port})privateintredisLivePort;Value({spring。redislive。password})privateStringredisLivePass;Value({spring。redislive。database})privateintredisLiveDb;公共配置Value({spring。redis。timeout})privatelongtimeout;Value({spring。redis。lettuce。pool。minidle})privateintminIdle;Value({spring。redis。lettuce。pool。maxidle})privateintmaxIdle;Value({spring。redis。lettuce。pool。maxactive})privateintmaxActive;Value({spring。redis。lettuce。pool。maxwait})privateintmaxWait;装配RedisTemplatep这里根据默认连接配置装配实例paramredisConnectionFactory默认returnredisTemplateauthorzhengshangjincreatedon20200423Bean(nameredisTemplate)publicRedisTemplateObject,ObjectredisTemplate(RedisConnectionFactoryredisConnectionFactory){returncreateRedisTemplate(redisConnectionFactory);}装配StringRedisTemplatep这里根据默认连接配置装配实例paramredisConnectionFactory默认returnStringRedisTemplateauthorzhengshangjincreatedon20200423Bean(namestringRedisTemplate)publicStringRedisTemplatestringRedisTemplate(RedisConnectionFactoryredisConnectionFactory){returncreateStringRedisTemplate(redisConnectionFactory);}装配Live数据源returnliveStringRedisTemplateauthorzhengshangjincreatedon20200423Bean(nameliveStringRedisTemplate)publicStringRedisTemplateliveStringRedisTemplate(){returncreateStringRedisTemplate(redisLiveHost,redisLivePort,redisLivePass,redisLiveDb);}创建RedisTemplateparamredisConnectionFactoryredisConnectionFactoryreturnRedisTemplateauthorzhengshangjincreatedon20200423publicRedisTemplateObject,ObjectcreateRedisTemplate(RedisConnectionFactoryredisConnectionFactory){ObjectMapperobjectMappernewObjectMapper();objectMapper。setVisibility(PropertyAccessor。ALL,JsonAutoDetect。Visibility。ANY);objectMapper。activateDefaultTyping(LaissezFaireSubTypeValidator。instance,ObjectMapper。DefaultTyping。NONFINAL,JsonTypeInfo。As。PROPERTY);Jackson2JsonRedisSerializerlt;?serializernewJackson2JsonRedisSerializer(Object。class);serializer。setObjectMapper(objectMapper);RedisTemplateObject,ObjectredisTemplatenewRedisTemplate();redisTemplate。setConnectionFactory(redisConnectionFactory);redisTemplate。setKeySerializer(newStringRedisSerializer());redisTemplate。setValueSerializer(serializer);redisTemplate。setHashKeySerializer(newStringRedisSerializer());redisTemplate。setHashValueSerializer(serializer);redisTemplate。afterPropertiesSet();returnredisTemplate;}创建StringRedisTemplateparamredisConnectionFactoryredisConnectionFactoryreturnStringRedisTemplateauthorzhengshangjincreatedon20200423publicStringRedisTemplatecreateStringRedisTemplate(RedisConnectionFactoryredisConnectionFactory){StringRedisTemplatestringRedisTemplatenewStringRedisTemplate();stringRedisTemplate。setConnectionFactory(redisConnectionFactory);returnstringRedisTemplate;}创建StringRedisTemplateparamhost主机paramport端口parampassword密码paramdatabase库returnStringRedisTemplateauthorzhengshangjincreatedon20200423publicStringRedisTemplatecreateStringRedisTemplate(Stringhost,intport,Stringpassword,intdatabase){基本配置RedisStandaloneConfigurationconfigurationnewRedisStandaloneConfiguration();configuration。setHostName(host);configuration。setPort(port);configuration。setDatabase(database);if(ObjectUtils。isNotEmpty(password)){RedisPasswordredisPasswordRedisPassword。of(password);configuration。setPassword(redisPassword);}连接池通用配置GenericObjectPoolConfiglt;?genericObjectPoolConfignewGenericObjectPoolConfig();genericObjectPoolConfig。setMaxTotal(maxActive);genericObjectPoolConfig。setMinIdle(minIdle);genericObjectPoolConfig。setMaxIdle(maxIdle);genericObjectPoolConfig。setMaxWaitMillis(maxWait);LettucePoolLettucePoolingClientConfiguration。LettucePoolingClientConfigurationBuilderbuilderLettucePoolingClientConfiguration。builder();builder。poolConfig(genericObjectPoolConfig);builder。commandTimeout(Duration。ofSeconds(timeout));LettuceConnectionFactoryconnectionFactorynewLettuceConnectionFactory(configuration,builder。build());connectionFactory。afterPropertiesSet();StringRedisTemplatestringRedisTemplatenewStringRedisTemplate();stringRedisTemplate。setConnectionFactory(connectionFactory);returnstringRedisTemplate;}}注入使用
根据Qualifier指定beanname来获取AutowiredQualifier(liveStringRedisTemplate)publicStringRedisTemplatestringRedisTemplate;
我15岁中学生,想入手DW和卡西欧这两款表,怎么样?谢邀:15岁的年纪,佩戴腕表除了款式外,还有金钱问题。这个年纪经济还不算宽裕,可以考虑一下几款。1、VHLONDON大表盘,简约指针设计配合完美曲线表圈,采用经典的……
信通院发布7月国内手机市场运行报告出货近3000万台【手机中国新闻】8月12日,中国信通院发布了7月国内手机市场运行分析报告。报告显示,7月国内手机出货量达2867。6万台,同比增长28。6,环比增长11。7。5G手机加速渗透,……
小米12设计图曝光?两亿像素主摄?屏幕下摄像头设计?小米12系列要在今年底前发布?当然这个是可能的,毕竟骁龙895应该12月就能大批量产了,所以小米12可能会在年底发布?当然这个手机的配置看起来是曝光了?这款手机会使用骁龙……
共享经济下的共享充电宝电小牛共享充电宝我们都知道共享行业在过去几年内风生水起。优步、滴滴的补贴大战,让共享两字进入了大家的视野里,紧接着是共享单车,甚至是共享雨伞、共享纸巾也出现在各大头条里。……
雷鸟FF1手机全新发布高刷无界屏诚意满满8月26日,TCLMiniLED战略发布会在深圳TCL国际E城举行。旗下子品牌雷鸟在大会上发布了其首款智能手机雷鸟FF1。该手机围绕快意不限速,灵感不设限的产品主张,集合了当下……
规模商用序幕拉开首批700MHz5G商用站点开通(马秋月文)近日,中国广电携手中国移动在广州成功开通全国首批100个700MHz5G商用站点,700MHz5G商用网络规模建设拉开序幕。上周中国移动发布2021年中期业绩……
小米11升级MIUI12。5增强版使用体验大家好,不知道大家通过我给大家推荐的升级教程升级以后,手机在使用上,体验有没有好一点呢下面是我升级后的体验和大家分享一下:流畅度相比之前版本提升很多,感知明显,应用启动响……
朗盛推出两种新的低游离预聚物技术用于高温应用的新型低游离TDI聚碳酸酯预聚物。在朗盛的聚氨酯系统业务部将在今年的聚氨酯制造商协会(PMA)年度会议上提出的重大发展。他们将展示两种新的Adiprene系列……
谷歌Pixel6Pro出问题关机后闪屏如图所示,谷歌Pixel6Pro在关机状态下,短按电源键会出现屏幕闪烁。AndroidAuthority实测,自己的Pixel6Pro也存在这个问题。值得注意的是,长按电……
从71家企业,看清中国自动驾驶未来政策更支持、民众更开放、数据更多元。题图来自公开图片从上世纪80年代初,美国就开始研究自动驾驶技术的军事化应用;进入21世纪后,由于深度学习算法的引入,自动驾驶技术……
欧拉闺蜜局火爆成都车展!引众多女性踊跃打卡8月29日,三年而立的欧拉,以一场前所未有的闺蜜局,在成都车展上玩出了新花样,用更走心的展台布置、更懂女性的闺蜜之车、更宏伟的她商业生态,再次刷新了更爱女人的价值新认知!……
2021选购笔记本电脑须知本人年轻时因为各种套路而迷迷糊糊地买到了坑机,所以希望有意愿选购笔记本的同学在阅读我的文章后对电脑有一定了解。首先是电脑配置的一些基础知识,在这里进行一些通俗易懂的科普:……