spring boot集成redisTemplate redis集群-极简版(非哨兵)

摘要:
首先,为您的平台组设置一个redis集群~给出一组具有三个主要组件和三个次要组件的IP。1.指南包<dependency><groupId>org。springframework启动springframeworkstarter数据redisredis.clients˂a

    首先自己平台组搭建好redis集群~给一堆ip 三主三从

1.导包

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>

2.配置yml文件 

redis:
open: true # 是否开启redis缓存 true开启 false关闭
database: 0
host: **.***.**.***:6379,***.**.***.**:6380,***.***.***.***:6379l略
password: ***** # 密码(默认为空)
timeout: 6000 # 连接超时时长(毫秒)
jedis:
pool:
max-active: 1000 # 连接池最大连接数(使用负值表示没有限制)
max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制)
max-idle: 10 # 连接池中的最大空闲连接
min-idle: 5 # 连接池中的最小空闲连接
3.配置config
package com.huatai.server.config;

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisClusterConfiguration;
import org.springframework.data.redis.connection.RedisNode;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import redis.clients.jedis.JedisCluster;
import redis.clients.jedis.JedisPoolConfig;

import java.util.HashSet;
import java.util.Set;

@Configuration
@ConditionalOnClass({JedisCluster.class})
public class RedisAutoConfiguration {
@Value("${spring.redis.host}")
private String host;
@Value("${spring.redis.password}")
private String password;
@Value("${spring.redis.timeout}")
private int connectionTimeout;
/* @Value("${redis.so_timeout:2000}")
private int soTimeout;
@Value("${redis.max_attempts:10}")
private int maxAttempts;*/
@Value("${spring.redis.jedis.pool.max-active}")
private int maxTotal;
@Value("${spring.redis.jedis.pool.min-idle}")
private int minIdle;
@Value("${spring.redis.jedis.pool.max-idle}")
private int maxIdle;
@Value("${spring.redis.jedis.pool.max-wait}")
private int maxWaitMillis;

@Bean(name = "myRedisClusterConfiguration")
public RedisClusterConfiguration jedisCluster(){
RedisClusterConfiguration redisClusterConfiguration = new RedisClusterConfiguration();
String [] hosts = host.split(",");
Set<RedisNode> nodeList = new HashSet<RedisNode>();
for (String hostAndPort : hosts){
String [] hostOrPort = hostAndPort.split(":");
nodeList.add(new RedisNode(hostOrPort[0],Integer.parseInt(hostOrPort[1])));
}
redisClusterConfiguration.setClusterNodes(nodeList);
redisClusterConfiguration.setMaxRedirects();
return redisClusterConfiguration;
}

@Bean(name = "myJedisPoolConfig")
public JedisPoolConfig jedisPoolConfig(){
JedisPoolConfig poolConfig = new JedisPoolConfig();
poolConfig.setMaxIdle(this.maxIdle);
poolConfig.setMinIdle(this.minIdle);
poolConfig.setTestOnCreate(true);
poolConfig.setTestOnBorrow(true);
poolConfig.setTestOnReturn(true);
poolConfig.setTestWhileIdle(true);
return poolConfig;
}

@Bean(name = "MyJedisConnectionFactory")
public JedisConnectionFactory getJedisConnectionFactory(@Qualifier("myRedisClusterConfiguration") RedisClusterConfiguration redisClusterConfiguration,
@Qualifier("myJedisPoolConfig") JedisPoolConfig jedisPoolConfig){
JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory(redisClusterConfiguration, jedisPoolConfig);
// 判断密码是否存在,存在设置值
checkPasswordIfNull(jedisConnectionFactory);
return jedisConnectionFactory;
}



@Bean(name = "myRedisTemplates")
public RedisTemplate redisTemplate(@Qualifier("MyJedisConnectionFactory") JedisConnectionFactory jedisConnectionFactory){
StringRedisTemplate myRedisTemplate = new StringRedisTemplate();
myRedisTemplate.setConnectionFactory(jedisConnectionFactory);
return myRedisTemplate;
}

private void checkPasswordIfNull(JedisConnectionFactory jedisConnectionFactory){
if (!StringUtils.isBlank(password)) {
jedisConnectionFactory.setPassword(password);

}
}

}
4.大功告成 验证结果
注:spring boot 版本 一定要注意 不然会报错 亲测 适用于2.1.4.RELEASE 2.0.2.RELEASE


免责声明:文章转载自《spring boot集成redisTemplate redis集群-极简版(非哨兵)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇JS获取上一个月的本月的上一个月或者下个月的实现gotoTop返回顶部 JS下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

redis部署到云服务器上的一些坑

最近做项目需要部署redis,特记录一下部署时遇到的坑。 一、对redis.conf配置文件的配置 1、将bind属性注释掉 bind是绑定的主机地址,你可以绑定单一接口,如果没有绑定,所有接口都会监听到来的连接,所以为了让外部的所有接口都被redis监听,需要将bind注释掉。 #bind 127.0.0.1 2、将daemonize属性设置为yes...

Redis——集群(cluster)

前言 在前面的文章中,已经介绍了Redis的几种高可用技术:持久化、主从复制和哨兵,但这些方案仍有不足,其中最主要的问题是存储能力受单机限制,以及无法实现写操作的负载均衡。 Redis集群解决了上述问题,实现了较为完善的高可用方案。本文将详细介绍集群。 主要内容包括:集群的作用;集群的搭建方法及设计方案;集群的基本原理;客户端访问集群的方法;以及其他实践中...

Redis 的过期策略都有哪些?

面试题redis 的过期策略都有哪些?内存淘汰机制都有哪些?手写一下 LRU 代码实现? 常见的有两个问题:• 往 redis 写入的数据怎么没了?可能有同学会遇到,在生产环境的 redis 经常会丢掉一些数据,写进去了,过一会儿可能就没了。我的天,同学,你问这个问题就说明 redis 你就没用对啊。redis 是缓存,你给当存储了是吧?啥叫缓存?用内存当...

Redis 使用指南:深度解析 info 命令

Redis 是一个使用  ANSI C 编写的开源、基于内存、可选持久性的键值对存储数据库,被广泛应用于大型电商网站、视频网站和游戏应用等场景,能够有效减少数据库磁盘 IO, 提高数据查询效率,减轻管理维护工作量,降低数据库存储成本。对传统磁盘数据库是一个重  要的补充,成为了互联网应用,尤其是支持高并发访问的互联网应用必不可少的基础服务之一。它的主要优势...

Redis哨兵参数

一.常用命令 sentinel的基本状态信息INFO 列出所有被监视的主服务器,以及这些主服务器的当前状态SENTINEL masters 列出指定主redis的从节点状态情况SENTINEL slaves <master-name> 列出指定主redis的监控哨兵信息,不包含他自己SENTINEL sentinels <master-n...

Redis服务启动失败,提示:redis-server:command not found

今天我开始做主从复制的集群模式的测试,所以需要再装一个Linux操作系统,我在虚拟机里已经安装了一个Linux操作系统,Redis也已经配置好了。今天打算再安装一个Linux操作系统,Linux系统的安装过程很简单,就不多说了,如果大家想看,请查看我的另一篇文章《Redis进阶实践之一VMWare Pro虚拟机安装和Linux系统的安装》。 Linux操作...