spring + spring-data-redist + Redis 单机、集群(cluster模式,哨兵模式)
一、单机redis配置
1. 配置redis连接池
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
<!-- 控制一个pool可分配多少个jedis实例 -->
<property name="maxTotal" value="${redis.maxTotal}"/>
<!-- 控制一个pool最多有多少个状态为idle(空闲)的jedis实例 -->
<property name="maxIdle" value="${redis.maxIdle}"/>
<!-- 表示当borrow一个jedis实例时,最大的等待时间,如果超过等待时间,则直接抛出JedisConnectionException -->
<property name="maxWaitMillis" value="${redis.maxWaitMillis}"/>
<property name="testOnBorrow" value="true"/>
<property name="testOnReturn" value="true"/>
</bean> <!-- redis的连接池pool,不是必选项:timeout/password -->
<bean id="jedisConnectionFactory"
class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
<property name="hostName" value="${redis.host}"/>
<property name="port" value="${redis.port}"/>
<property name="password" value="${redis.passWord}"/>
<property name="poolConfig" ref="jedisPoolConfig"/>
</bean>
2. 配置redis工具类
<bean id="stringRedisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate">
<property name="connectionFactory" ref="jedisConnectionFactory"/>
</bean> <!-- 配置Redis自定义工具类 -->
<bean id="springRedis" class="com.wslook.common.redis.SpringRedis">
<property name="redisKeyPrefix" value="${redis.key.prefix}"/>
<property name="stringRedisTemplate" ref="stringRedisTemplate"/>
</bean>
3. properties文件
二、哨兵模式配置
1. 配置redis连接池
<!--配置JedisPoolConfig-->
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
<!-- 控制一个pool可分配多少个jedis实例 -->
<property name="maxTotal" value="${redis.sentinel.maxTotal}"/>
<!-- 控制一个pool最多有多少个状态为idle(空闲)的jedis实例 -->
<property name="maxIdle" value="${redis.sentinel.maxIdle}"/>
<!-- 表示当borrow一个jedis实例时,最大的等待时间,如果超过等待时间,则直接抛出JedisConnectionException -->
<property name="maxWaitMillis" value="${redis.sentinel.maxWaitMillis}"/>
<property name="testOnBorrow" value="true"/>
<property name="testOnReturn" value="true"/>
</bean> <!-- 构造JedisConnectionFactory实例 -->
<bean id="jedisConnectionFactory"
class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
<constructor-arg name="sentinelConfig" ref="redisSentinelConfiguration"/>
<constructor-arg name="poolConfig" ref="jedisPoolConfig"/>
<property name="password" value="${redis.sentinel.password}"/>
</bean>
2. 配置Redis Sentinel
- 只需配置集群名称和哨兵地址即可
<bean id="redisSentinelConfiguration" class="org.springframework.data.redis.connection.RedisSentinelConfiguration">
<property name="master">
<bean class="org.springframework.data.redis.connection.RedisNode">
<property name="name" value="mymaster"/>
</bean>
</property>
<property name="sentinels">
<set>
<bean name="redisNode1" class="org.springframework.data.redis.connection.RedisNode">
<constructor-arg name="host" value="${redis.sentinel.node1.host}"/>
<constructor-arg name="port" value="${redis.sentinel.node1.port}"/>
</bean>
<bean name="redisNode2" class="org.springframework.data.redis.connection.RedisNode">
<constructor-arg name="host" value="${redis.sentinel.node2.host}"/>
<constructor-arg name="port" value="${redis.sentinel.node2.port}"/>
</bean>
</set>
</property>
</bean>
3. 配置redis工具类
<bean id="stringRedisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate">
<property name="connectionFactory" ref="jedisConnectionFactory"/>
</bean> <!-- 配置springRedis -->
<bean id="springRedis" class="com.wslook.common.redis.SpringRedis">
<property name="redisKeyPrefix" value="${redis.sentinel.key.prefix}"/>
<property name="stringRedisTemplate" ref="stringRedisTemplate"/>
</bean>
4. properties文件
三、Cluster集群配置
1. 配置redis连接池
<!--配置JedisPoolConfig-->
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
<!-- 控制一个pool可分配多少个jedis实例 -->
<property name="maxTotal" value="${redis.cluster.maxTotal}"/>
<!-- 控制一个pool最多有多少个状态为idle(空闲)的jedis实例 -->
<property name="maxIdle" value="${redis.cluster.maxIdle}"/>
<!-- 表示当borrow一个jedis实例时,最大的等待时间,如果超过等待时间,则直接抛出JedisConnectionException -->
<property name="maxWaitMillis" value="${redis.cluster.maxWaitMillis}"/>
<property name="testOnBorrow" value="true"/>
<property name="testOnReturn" value="true"/>
</bean> <!-- 构造JedisConnectionFactory实例 -->
<bean id="jedisConnectionFactory"
class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
<constructor-arg name="clusterConfig" ref="redisClusterConfiguration"/>
<constructor-arg name="poolConfig" ref="jedisPoolConfig"/>
<property name="password" value="${redis.cluster.password}"/>
</bean>
2. 配置Cluster节点
<bean id="redisClusterConfiguration" class="org.springframework.data.redis.connection.RedisClusterConfiguration">
<property name="clusterNodes">
<set>
<bean name="redisNode0" class="org.springframework.data.redis.connection.RedisNode">
<constructor-arg name="host" value="${redis.cluster.node.host}"/>
<constructor-arg name="port" value="${redis.cluster.node.port}"/>
</bean>
<bean name="redisNode1" class="org.springframework.data.redis.connection.RedisNode">
<constructor-arg name="host" value="${redis.cluster.node1.host}"/>
<constructor-arg name="port" value="${redis.cluster.node1.port}"/>
</bean>
<bean name="redisNode2" class="org.springframework.data.redis.connection.RedisNode">
<constructor-arg name="host" value="${redis.cluster.node2.host}"/>
<constructor-arg name="port" value="${redis.cluster.node2.port}"/>
</bean>
<bean name="redisNode3" class="org.springframework.data.redis.connection.RedisNode">
<constructor-arg name="host" value="${redis.cluster.node3.host}"/>
<constructor-arg name="port" value="${redis.cluster.node3.port}"/>
</bean>
<bean name="redisNode4" class="org.springframework.data.redis.connection.RedisNode">
<constructor-arg name="host" value="${redis.cluster.node4.host}"/>
<constructor-arg name="port" value="${redis.cluster.node4.port}"/>
</bean>
<bean name="redisNode5" class="org.springframework.data.redis.connection.RedisNode">
<constructor-arg name="host" value="${redis.cluster.node5.host}"/>
<constructor-arg name="port" value="${redis.cluster.node5.port}"/>
</bean>
</set>
</property>
</bean>
3. 配置redis工具类
<bean id="stringRedisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate">
<property name="connectionFactory" ref="jedisConnectionFactory"/>
</bean> <!-- 配置springRedis -->
<bean id="springRedis" class="com.wslook.common.redis.SpringRedis">
<property name="redisKeyPrefix" value="${redis.cluster.key.prefix}"/>
<property name="stringRedisTemplate" ref="stringRedisTemplate"/>
</bean>
4. properties文件
spring + spring-data-redist + Redis 单机、集群(cluster模式,哨兵模式)的更多相关文章
- Redis 主从集群搭建及哨兵模式配置
最近搭建了redis集群及哨兵模式,为方便以后查看特此记录下来: 1.Redis安装 2.主从架构 2.1 Redis主从架构图 2.2Redis主从结构搭建 Redis集群不用安装多个Redis,只 ...
- docker搭建redis主从集群和sentinel哨兵集群,springboot客户端连接
花了两天搭建redis主从集群和sentinel哨兵集群,讲一下springboot客户端连接测试情况 redis主从集群 从网上查看说是有两种方式:一种是指定配置文件,一种是不指定配置文件 引用地址 ...
- springboot2.x版本整合redis(单机/集群)(使用lettuce)
在springboot1.x系列中,其中使用的是jedis,但是到了springboot2.x其中使用的是Lettuce. 此处springboot2.x,所以使用的是Lettuce.关于jedis跟 ...
- 面向接口编程实现不改代码实现Redis单机/集群之间的切换
开发中一般使用Redis单机,线上使用Redis集群,因此需要实现单机和集群之间的灵活切换 pom配置: <!-- Redis客户端 --> <dependency> < ...
- springboot redis(单机/集群)
前言 前面redis弄了那么多, 就是为了在项目中使用. 那这里, 就分别来看一下, 单机版和集群版在springboot中的使用吧. 在里面, 我会同时贴出Jedis版, 作为比较. 单机版 1. ...
- redis之(十五)redis的集群中的哨兵角色
一:redis集群的哨兵的目的是什么?. (1)监控主redis和从redis数据库是否正常运行 (2)主redis出现故障,自动将其中一台从redis升级为主redis.将原先的主redis转变成从 ...
- Java代码操作Redis的sentinel和Redis的集群Cluster操作
总共四台机器,crxy99,crxy98分别是主节点和从节点. crxy97和crxy96是两个监控此主从架构的sentinel节点. 看代码: import org.junit.Test; im ...
- 【转】Java代码操作Redis的sentinel和Redis的集群Cluster操作
总共四台机器,crxy99,crxy98分别是主节点和从节点. crxy97和crxy96是两个监控此主从架构的sentinel节点. 直接看代码: 1 import org.junit.Test ...
- redis之集群二:哨兵
回顾 上一篇介绍了Redis的主从集群模式,这个集群模式配置很简单,只需要在Slave的节点上进行配置,Master主节点的配置不需要做任何更改.但是,我们发现这种集群模式当主节点宕机,主从无法自动切 ...
- redis集群搭建和哨兵模式以及AOF和RDB持久化
Redis主从+哨兵模式 1.环境准备 (1)三台独立的linux主机 (2)IP分别为:10.150.200.182 (从) 10.150.200.184(从) 10.150.200.195(主) ...
随机推荐
- 前端面试题-BFC(块格式化上下文)
一.BFC 的概念 1.规范解释 块格式化上下文(Block Formatting Context,BFC)是Web页面的可视化CSS渲染的一部分,是布局过程中生成块级盒子的区域,也是浮动元素与其他元 ...
- Java中遍历HashMap方式
本教程将为你展示Java中HashMap的几种典型遍历方式. 如果你使用Java8,由于该版本JDK支持lambda表达式,可以采用第5种方式来遍历. 如果你想使用泛型,可以参考方法3.如果你使用旧版 ...
- Phaserjs怎样用ES6开发游戏
想用ES6语法开发phaserjs游戏,是phaserCE,但是不知道怎么导入,总是报错,后来经过多次尝试,解决方法如下: 干脆不导入,直接暴露到window里,然后模块化的代码全部在window.o ...
- BeanUtils对象属性copy的性能对比以及源码分析
1. 对象属性拷贝的常见方式及其性能 在日常编码中,经常会遇到DO.DTO对象之间的转换,如果对象本身的属性比较少的时候,那么我们采用硬编码手工setter也还ok,但如果对象的属性比较多的情况下,手 ...
- 在linux 下配置firewalld
查看firewalld 是否开始与运行 以下两种方式都可以 systemctl status firewalld.service firewall-cmd --state 查看所有打开的端口 以下两种 ...
- JAVA学长
https://www.cnblogs.com/chenmingjun/p/9697371.html
- luogu 3241 [HNOI2015]开店 动态点分治+二分+vector
独立写出来+想出来的,1.5h就切了~ 建立点分树,然后用 $vector$ 暴力存所有子节点,然后二分一下子就可以了. #include <cstdio> #include <ve ...
- codevs 1009 产生数x
题目描述 Description 给出一个整数 n(n<10^30) 和 k 个变换规则(k<=15). 规则: 一位数可变换成另一个一位数: 规 ...
- [Pytorch笔记] scatter_
https://blog.csdn.net/qq_16234613/article/details/79827006 scatter_(input, dim, index, src)将src中数据根据 ...
- flink⼿手动维护kafka偏移量量
flink对接kafka,官方模式方式是自动维护偏移量 但并没有考虑到flink消费kafka过程中,如果出现进程中断后的事情! 如果此时,进程中段: 1:数据可能丢失 从获取了了数据,但是在执⾏行行 ...