Redis RedisCluster Spring整合

Redis四种模式在Spring Boot框架下的配置 Spring Boot默认不支持Redis主从模式的自动配置,需要手动配置LettuceConnectionFactory,在RedisTemplate中使用。以上配置涵盖了Redis的四种部署模式在Spring Boot框架下的配置方法。每种模式都有其特定的应用场景和配置要求,可以根据实际需求选择合适的模式进行配置。 阅读详情

转载: http://blog.youkuaiyun.com/fengyong7723131/article/details/52995592

前言:

在上一篇文章中,用了jedisCluster来做redis集群的客户端,这一篇我们介绍一下spring-data-redis给我们提供的操作redis集群的redisTemplate,着急用的可以跳过1,直接看2

准备工作:

jdk版本:1.8

junit版本:4.12

jar包版本:

[html]  view plain  copy
  1. <!-- jedis Java接口 -->  
  2. <dependency>  
  3.   <groupId>redis.clients</groupId>  
  4.   <artifactId>jedis</artifactId>  
  5.   <version>2.9.0</version>  
  6.   <type>jar</type>  
  7. </dependency>  
[html]  view plain  copy
  1. <!-- Spring -->  
  2. <dependency>  
  3.   <groupId>org.springframework</groupId>  
  4.   <artifactId>spring-context</artifactId>  
  5.   <version>4.3.3.RELEASE</version>  
  6. </dependency>  
[html]  view plain  copy
  1. <dependency>  
  2.   <groupId>org.springframework.data</groupId>  
  3.   <artifactId>spring-data-redis</artifactId>  
  4.   <version>1.7.4.RELEASE</version>  
  5. </dependency>  

1:RedisTemplate由来简介

在网上没有找到redisTemplate操作redis集群的例子,所以只能自己动手,在这里简单说一下过程.首先既然redisTemplate依赖jedis,那我们可以认为他内部操作的就是jedis,同理,我们也可以认为他内部也能操作jedisCluster.接下来就在spring-data-redis的源码里面搜一下jedisCluster这个字符串,发现JedisClusterConnection和JedisConnectionFactory中出现了jedisCluster,有没有觉得JedisConnectionFactory很眼熟呢,对,就是配置文件中redisTemplate初始化时候需要用到的连接工厂.现在就可以直接看JedisConnectionFactory
首先,我们来看JedisConnectionFactory,发现里面有一个属性就是jedisCluster,那就看看jedisCluster是如何被初始化的,看下图:


我们可以先看这个方法,这个方法是从InitializingBean中实现的方法,是spring初始化bean的时候需要调用的.所以可以假装认为只要实例化了JedisConnectionFactory就可以实例化jedisCluster,但是不要忘了有一个条件,那就是clusterConfig不能为空,接下来我们找clusterConfig是如何被实例化的.发现JedisConnectionFactory有一个构造函数

JedisConnectionFactory(RedisClusterConfiguration clusterConfig, JedisPoolConfig poolConfig).这下就好办了JedisPoolConfig我们本来就认识,RedisClusterConfiguration是需要我们实例化的,接下来就看看RedisClusterConfiguration,一进来RedisClusterConfiguration我们就能看到个好东西,见下图:



我们可以看RedisClusterConfiguration的注释,虽然没有说明,但是光看格式,就大概能猜到这些东西应该是写到properties文件里面的,而构造函数的参数又正好是propertySource,很容易就能联想到ResourcePropertySource,接下来就简单了,直接开始开干了.

2:redisClusterConfig配置文件

[html]  view plain  copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.        xmlns:p="http://www.springframework.org/schema/p"  
  5.        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd  
  6.          http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">  
  7.   
  8. <!-- 引入配置文件 -->  
  9.     <bean id="propertyConfigurer"  
  10.           class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
  11.         <property name="location" value="classpath:redis.properties" />  
  12.     </bean>  
  13.   
  14.     <!-- jedis 配置-->  
  15.     <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig" >  
  16.         <!--最大空闲数-->  
  17.         <property name="maxIdle" value="${redis.maxIdle}" />  
  18.         <!--最大建立连接等待时间-->  
  19.         <property name="maxWaitMillis" value="${redis.maxWait}" />  
  20.         <!--是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个-->  
  21.         <property name="testOnBorrow" value="${redis.testOnBorrow}" />  
  22.     </bean >  
  23.   
  24.     <!--配置文件加载-->  
  25.     <bean id="resourcePropertySource" class="org.springframework.core.io.support.ResourcePropertySource">  
  26.         <constructor-arg name="name" value="redis.properties"/>  
  27.         <constructor-arg name="resource" value="classpath:redis.properties"/>  
  28.     </bean>  
  29.     <!--redisCluster配置-->  
  30.     <bean id="redisClusterConfiguration" class="org.springframework.data.redis.connection.RedisClusterConfiguration">  
  31.         <constructor-arg name="propertySource" ref="resourcePropertySource"/>  
  32.     </bean>  
  33.     <!-- redis服务器中心 -->  
  34.     <bean id="connectionFactory"  class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" >  
  35.        <constructor-arg name="clusterConfig" ref="redisClusterConfiguration"/>  
  36.         <constructor-arg name="poolConfig" ref="poolConfig"/>  
  37.         <property name="password" value="${redis.password}" />  
  38.         <property name="timeout" value="${redis.timeout}" ></property>  
  39.     </bean >  
  40.     <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate" >  
  41.         <property name="connectionFactory" ref="connectionFactory" />  
  42.         <!--如果不配置Serializer,那么存储的时候缺省使用String,如果用User类型存储,那么会提示错误User can't cast to String!!  -->  
  43.         <property name="keySerializer" >  
  44.             <bean class="org.springframework.data.redis.serializer.StringRedisSerializer" />  
  45.         </property>  
  46.         <property name="valueSerializer" >  
  47.             <bean class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer" />  
  48.         </property>  
  49.         <property name="hashKeySerializer">  
  50.             <bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/>  
  51.         </property>  
  52.         <property name="hashValueSerializer">  
  53.             <bean class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer"/>  
  54.         </property>  
  55.     </bean >  
  56.   
  57.     <bean id="redisHttpSessionConfiguration"  
  58.           class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration">  
  59.        <!--超时时间,默认1800秒-->  
  60.         <property name="maxInactiveIntervalInSeconds" value="1800" />  
  61.     </bean>  
  62.   
  63. </beans>  

3:redis.properties配置文件

[plain]  view plain  copy
  1. #redis中心  
  2. #redis的服务器地址  
  3. redis.host=127.0.0.1  
  4. #redis的服务端口  
  5. redis.port=6379  
  6. #密码  
  7. redis.password=  
  8. #最大空闲数  
  9. redis.maxIdle=100  
  10. #最大连接数  
  11. redis.maxActive=300  
  12. #最大建立连接等待时间  
  13. redis.maxWait=1000  
  14. #客户端超时时间单位是毫秒  
  15. redis.timeout=100000  
  16. redis.maxTotal=1000  
  17. redis.minIdle=8  
  18. #明是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个  
  19. redis.testOnBorrow=true  
  20.   
  21.   
  22. #rediscluster  
  23. spring.redis.cluster.nodes=127.0.0.1:7000,127.0.0.1:7001,127.0.0.1:7002,127.0.0.1:7003,127.0.0.1:7004,127.0.0.1:7005,127.0.0.1:7006,127.0.0.1:7007  
  24. spring.redis.cluster.max-redirects=3  
  25. #rediscluster  

4:直接注入就可以使用,测试通过

redis cluster集群以及整合springboot(集群版) 一.创建文件夹 说明:这里用一台服务器模拟reids cluster 集群,集群的端口号从8001-8006表示6个不同的redis mkdir /usr/local/redis-cluster #创建集群文件目录 cd /usr/local/redis-cluster/ #进入集群文件目录 mkdir -p 8001/data 8002/data 8003/data 8004/data 8... 阅读详情

相关推荐

zynq+LWIP 裸机双网口实现(MIO+EMIO)+程序下载

芯片型号: ZYNQ: XC7Z010clg400开发软件:Vivado2022 + Xilinx Vitis 2022网卡芯片:RTL8211FDI(需要根据网口芯片型号修改对应的硬件配置代码。

thinking in 小宇宙 3405

SpringBoot整合Redis-Cluster集群

1.添加相关依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 2.添加redis配置 # Red...

u010277958的博客 1万+

嘉立创EDA实战:从点亮第一盏灯到完成首块PCB

本文详细介绍了使用嘉立创EDA从点亮第一盏LED灯到完成首块PCB的全过程。通过实战案例分享,包括原理图绘制、PCB设计、DRC检查、覆铜操作等关键步骤,帮助电子设计爱好者快速掌握嘉立创EDA的使用技巧,并避免常见的设计错误。

weixin_30314793的博客 372

SpringBoot配置Redis多集群数据源

Redis 三大客户端 简介 Jedis:是Redis 老牌的Java实现客户端,提供了比较全面的Redis命令的支持, Redisson:实现了分布式和可扩展的Java数据结构。 Lettuce:高级Redis客户端,用于线程安全同步,异步和响应使用,支持集群,Sentinel,管道和编码器。 优点: Jedis:比较全面的提供了Redis的操作特性 Redisson:促使使用者对Redis的关注分离,提供很多分布式相关操作服务,例如分布式锁,分布式集合,可通过Redis支持延迟队列 Le..

TheOne的博客 3600

AI视频生成成本优化实战:混合架构与硬件选型

AI视频生成技术正面临效果与成本的二元博弈,其核心挑战在于高昂的推理算力消耗与黑箱服务的不确定性。从技术原理看,视频生成依赖扩散模型等深度学习架构,通过多轮迭代实现像素级合成,这导致GPU显存占用和电力消耗呈指数级增长。在工程实践中,采用混合推理架构能有效平衡成本与质量,例如云端处理关键帧配合本地渲染过渡帧,实测可降低58%支出。硬件选型方面,消费级显卡魔改与边缘计算设备为中小企业提供了可行方案,如RTX 3090显存扩容或Jetson AGX边缘部署。当前AI视频应用已渗透电商直播、新闻制作等领域,但需警

weixin_29531177的博客 293

避开SM30维护视图的坑:自动更新字段+日志记录的5个关键配置步骤

本文深入解析了SAP ABAP开发中SM30维护视图的深度定制,聚焦于实现自动更新字段与日志记录功能。文章详细阐述了从SE54配置起点到核心编码的5个关键步骤,重点讲解了如何利用事件驱动模型(如05创建事件和01保存前事件)安全操作动态数据结构,并提供了避免常见陷阱的实用技巧,帮助开发者构建稳定可靠的自动化维护机制。

plant的博客 622

【SpringBoot】SpringBoot + Redis集群配置(项目记录)

@Configuration public class RedisAutoConfig { @Bean public RedisConnectionFactory redisConnectionFactory(JedisPoolConfig jedisPool, RedisClusterConfiguration jedisConfig) { ...

sfh2018的博客 4922

【华为OD机试真题】4、字符统计及重排 | 机试真题+思路参考+代码解析(C++、Java、Py)

题目描述 >给出一个仅包含字母的字符串,不包含空格,统计字符串中各个字母(区分大小写)出现的次数, 并按照字母出现次数从大到小的顺序。输出各个字母及其出现次数。 如果次数相同,按照自然顺序进行排序,且小写字母在大写字母之前

KJ.JK 3289

SpringBoot连接Redis集群

文章目录1. 依赖2. 修改配置文件3. 创建RedisClusterConfig4. 测试 1. 依赖 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> </dependency> 2. 修改配置文件 server.port=100 #redis集群节点信息 spring.redi

qq_28834355的博客 1301

Python 安装 PyTorch(GPU)详细教程

本章教程,介绍如何安装PyTorch GPU版本的具体教程。

猿小白的博客 1617

【开源电机驱动】位置环控制

这是三闭环里的最后一个:位置闭环控制。如果你认真的阅读并推导了前章节,那么这一节将会很好理解。一如既往,我会使用简练的语言来描述复杂的问题。本章节主要涉及位置环的一些概念,以及控制框图。文章不会涉及具体的代码。

BadBoyHolly的博客 6095

Redis集群配置和部署 spring整合redisCluster

Redis集群配置和部署 1. 下载redis3.0 2. 上传服务器,解压,编译(前两步与之前相同) 3. 创建集群需要的目录 mkdir  /usr/local/cluster cd  /usr/local/cluster mkdir  7000 7001 7002 7003 7004 7005 4. 修改配置文件redis.conf cp  /usr/local/redis

liguangyan_neu的博客 1787

AUTOSAR知识点 之 XCP (二):XCP基础概念

学习XCP的过程中,对XCP的基本概念要做一个全面的认知,因为里面有很多缩写以及难以理解的点,假设对此模模糊糊一知半解,那么对整个协议栈的认知会遇到极大的障碍。XCP的信号流传输图示如下XCP 标准主要分为 5 个部分:这部分提供了对于协议的一个概况介绍,包括 XCP 的功能和基础性内容。这部分内容对协议层进行了详细的规范和说明。

梦想技术家 2769

RedisCluster集群搭建

Redis5.0.5搭建集群

大晨 377

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Spring Cloud+Redis cluster+Spring Cache配置

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.youkuaiyun.com/ifwinds/article/details/78937511 项目结构 personal +- example +- cacheTest +- config | +- RedisClusterConfig.java | ...

woshixianlaid的博客 2542

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

SpringBoot

SpringBoot创建RedisCluster https://blog.youkuaiyun.com/baidu_41669919/article/details/79148203

liar_____的博客 137

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

[特殊字符] Redis 集群部署与 Java 客户端接入

Redis Cluster 将 key 的空间分为 16384 个槽(slot),编号为 0~16383。写操作只在主节点进行,从节点不接收写入,仅用于备份与高可用。每个主节点之间通过 Gossip 协议定期进行心跳检测。它的从节点会参与投票选举,决定是否提升为主节点,实现。每个主节点可以有一个或多个从节点,用于。,否则一旦主节点宕机,集群就不可写。(如 15 秒),则会被标记为。每个主节点负责一部分槽的读写。集群通过多个主节点来实现。若一个主节点失联时间超过。来决定它属于哪个槽。每个主节点至少要配置。

2301_80320652的博客 548

spring boot分布式部署集成Spring session+redis cluster实现共享Session

项目本身是Spring boot单体应用,需横向扩展部署多台应用,由于JWT改造改动过大,评估后确定采用Spring session+redis cluster实现共享Session。 redis cluster安装过程参考 redis集群搭建 nginx负载均衡参考 Nginx多台服务器负载均衡 1.Maven引用 <dependency> <groupId>org.springframework.session</groupId> &lt

localhost 3784

redisCluster安装部署+redis集群+整合SSM

redisCluster部署整合SSM 更新日期:2020-3-18 chen 文章目录redisCluster部署整合SSM一、软件环境二、部署redisCluster三、spring SSM整合调用 redis集群 一、软件环境 ​ centos6 ​ redis-3.2.8-chen-ok.tar(已经将7000-7008配置文件封装) 二、部署redisCluster 上传redi...

向上程序员 274

RedisCluster集群搭建与整合Spring Boot

首先了解下RedisCluster集群原理 RedisCluster集群原理 搭建方案介绍 安装部署任何一个应用其实都很简单,只要安装步骤一步一步来就行了。下面说一下 Redis 集群搭建规划,由于集群至少需要6个节点(3主3从模式),所以,没有这么多机器给我玩,我本地也起不了那么多虚拟机(电脑太烂),现在计划是在一台机器上模拟一个集群,当然,这和生产环境的集群搭建没本质区别。 ...

art_code的博客 91

26、RedisCluster的java客户端

学习目标: 1、Spring 配置文件整合Redis的Cluster模式 2、Spring Boot整合Redis的Cluster模式 学习过程: redis的Cluster的链接方式非常简单,比哨兵模式还要更简单一下。直接看配置文件就可以了,这里就不罗嗦了。 一、Spring 使用配置文件整合 Redis Cluster <?xml version="1.0" encodin...

JavaDayUp 1176

springBoot 整合Redis

springBoot 连接 redis单机、redis集群

dylan_2017的博客 956

Spring Boot 2.1.4整合JetCache缓存框架实现本地caffeine远程redis存储(二、使用Redis-SpringData)

五一放假过后JetCache进行了最新版本2.6.0.M2 的升级 从此版本的Git提交记录看,此版本增加了对 spring-boot-starter-data-redis 的支持,这意味着配置更简单了,上一个版本对Redis的支持是使用Lettuce,直接对接lettuce,如果需要使用RedisTemplate,之前的配置方式需要配置jetCache,同时要配置spring.redi...

ankeway的博客 5236

spring boot以lettuce连接池整合redis-cluster(单机及集群版)

文章目录一.添加相关 pom 依赖二.修改 application.ymla. 单机版:b.集群版:三.添加RedisConfig 添加序列化方式以及缓存配置四.使用 一.添加相关 pom 依赖 commons依赖主要应用于单机版 <!--redis--> <dependency> <groupId>org.springframework.boot<...

萧曳丶 8805
上一篇: jedis : NoSuchMethodError: org.springframework.util.Assert.isTrue(ZLjava/util/function/Supplier
下一篇: Linux中Swap与Memory内存简单介绍
琅琊山二当家
博客等级 码龄18年 447粉丝 322原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值