基于springboot的redis集群配置

原创 2018年04月16日 10:21:40
使用yml配置文件形式配置redis连接, 也可直接使用RedisTemplate默认配置,就可不用创建以下代码内容,只需编写yml文件即可。
至此就可以使用RedisTemplate的自带API进行与redis的交互。

RedisClusterConf.java


package cn.com.xxx.config;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.MapPropertySource;
import org.springframework.data.redis.connection.RedisClusterConfiguration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import redis.clients.jedis.JedisPoolConfig;

import java.util.HashMap;
import java.util.Map;

/**
* @description RedisConf 配置
* @author qijunyu
* @date 2017/11/15 10:59
*/
@Configuration
public class RedisClusterConf {

private static final Logger logger = LoggerFactory.getLogger(RedisClusterConf.class);

@Value("${redis.cluster.nodes}")
private String clusterNodes;

// Redis服务器地址
@Value("${redis.host}")
private String host;
// Redis服务器连接端口
@Value("${redis.port}")
private int port;
// Redis服务器连接密码(默认为空)
@Value("${redis.password}")
private String password;
// 连接超时时间(毫秒)
@Value("${redis.timeout}")
private int timeout;
// Redis数据库索引(默认为0
@Value("${redis.database}")
private int database;
// 连接池最大连接数(使用负值表示没有限制)
@Value("${redis.pool.max-active}")
private int maxTotal;
// 连接池最大阻塞等待时间(使用负值表示没有限制)
@Value("${redis.pool.max-wait}")
private int maxWaitMillis;
// 连接池中的最大空闲连接
@Value("${redis.pool.max-idle}")
private int maxIdle;
// 连接池中的最小空闲连接
@Value("${redis.pool.min-idle}")
private int minIdle;

@Bean(name = "jedisClusterConfig")
public RedisClusterConfiguration getClusterConfiguration()
{
Map<String, Object> source = new HashMap<String, Object>();
source.put("spring.redis.cluster.nodes", clusterNodes);
source.put("spring.redis.cluster.timeout", timeout);
source.put("spring.redis.cluster.max-redirects", 5);

return new RedisClusterConfiguration(new MapPropertySource("RedisClusterConfiguration", source));
}

/**
* 配置JedisPoolConfig
* @return JedisPoolConfig实体
*/
@Bean(name = "jedisPoolConfig")
public JedisPoolConfig jedisPoolConfig() {
logger.info("=== XXX RedisConf jedisPoolConfig 初始化JedisPoolConfi ===");
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
// 连接池最大连接数(使用负值表示没有限制)
jedisPoolConfig.setMaxTotal(this.maxTotal);
// 连接池最大阻塞等待时间(使用负值表示没有限制)
jedisPoolConfig.setMaxWaitMillis(this.maxWaitMillis);
// 连接池中的最大空闲连接
jedisPoolConfig.setMaxIdle(this.maxIdle);
// 连接池中的最小空闲连接
jedisPoolConfig.setMinIdle(this.minIdle);
// jedisPoolConfig.setTestOnBorrow(true);
// jedisPoolConfig.setTestOnCreate(true);
// jedisPoolConfig.setTestWhileIdle(true);
return jedisPoolConfig;
}

/**
* 实例化 RedisConnectionFactory 对象
* @param poolConfig
* @return
*/
@Bean(name = "jedisConnectionFactory")
public RedisConnectionFactory jedisConnectionFactory(@Qualifier(value = "jedisClusterConfig") RedisClusterConfiguration poolConfig) {
logger.info("=== XXX RedisConf jedisConnectionFactory 初始化JedisPoolConfi ===");
JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory(poolConfig);
jedisConnectionFactory.setHostName(this.host);
jedisConnectionFactory.setPort(this.port);
jedisConnectionFactory.setDatabase(this.database);
jedisConnectionFactory.setTimeout(this.timeout);
return jedisConnectionFactory;
}

/**
* 实例化 RedisTemplate 对象
* @return
*/
@Bean(name = "redisTemplate")
public RedisTemplate<String, String> functionDomainRedisTemplate(@Qualifier(value = "jedisConnectionFactory") RedisConnectionFactory factory) {
logger.info("=== XXX RedisConf functionDomainRedisTemplate 初始化JedisPoolConfi ===");
RedisTemplate<String, String> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(factory);
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.setHashValueSerializer(new EntityRedisSerializer());
redisTemplate.setValueSerializer(new EntityRedisSerializer());
redisTemplate.afterPropertiesSet();
redisTemplate.setEnableTransactionSupport(true);
return redisTemplate;
}
}
application.yml
redis:
# Redis服务器地址
host: 127.0.0.1
# Redis服务器连接端口
port: 7000
# Redis服务器连接密码(默认为空)
password:
# 连接超时时间(毫秒)
timeout: 0
# Redis数据库索引(默认为0
database: 0
pool:
# 连接池最大连接数(使用负值表示没有限制)
max-active: 8
# 连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: -1
# 连接池中的最大空闲连接
max-idle: 8
# 连接池中的最小空闲连接
min-idle: 0
cluster:
nodes: 127.0.0.1:7000,127.0.0.1:7001,127.0.0.1:7002



Spring Boot 连接 redis 集群

最近一直在画小程序的界面,感觉自己都快成为一个前端工程师了,尤其是前面做管理后台的时候使用Angular4,让自己有点头大。都快忘记自己是Java开发了。。。上周自己在三台服务器上面搭建了一个redi...
  • qq442270636
  • qq442270636
  • 2018-02-04 19:27:47
  • 773

Redis-3.x集群配置(RedisCluster+SpringBoot+Jedis)

Redis-3.2.4集群配置(RedisCluster+SpringBoot+Jedis)
  • zhe1110
  • zhe1110
  • 2016-11-01 09:51:14
  • 11411

springboot 系统学习 4 redis cluster

之所以用springboot 集成redis cluster 是因为,之前七夕节 redis 哨兵没抗住 汗,所以直接走cluster 吧首先 写一下 properties 文件druid: t...
  • weixin_39526391
  • weixin_39526391
  • 2017-11-12 20:36:49
  • 864

spring boot下JedisCluster客户端的配置,连接Redis集群

1,pom依赖添加:                  redis.clients             jedis             jar             compi...
  • shandon100
  • shandon100
  • 2016-12-06 03:36:35
  • 6104

springboot 整合 redis集群(window版本)

说实话,很麻烦 先是安装redis,附上链接 https://github.com/MSOpenTech/redis/releases然后,复制到6个redis文件,修改每个文件里的redis.win...
  • qq_16414483
  • qq_16414483
  • 2018-02-28 15:49:57
  • 84

spring boot整合redis(单机+集群)

spring boot整合redis(单机+集群)
  • u011271894
  • u011271894
  • 2017-07-24 19:16:59
  • 11118

spring-boot配置redis cluster

只需简单两步,便可以配置好redis cluster连接,然后方便地使用RedisTemplate来存取数据。...
  • ClementAD
  • ClementAD
  • 2016-10-28 10:19:21
  • 12136

SpringBoot学习笔记(5) Spring Boot集成Redis实现自动配置

通过上面一些笔记的介绍, 我们可以自己动手去集成Redis, 没有什么难度的 还有Spring Boot官方提供了Spring-Data-Redis的Starter POM...
  • a67474506
  • a67474506
  • 2016-09-20 13:37:09
  • 45592

Springboot Redis分布式集群(4)- JedisCluster连接测试集群

Springboot Redis分布式集群(4)- JedisCluster连接测试集群@(Markdown博客)1. 在resources/application.properties中添加集群连接...
  • musuny
  • musuny
  • 2017-07-22 13:22:12
  • 813

Springboot Redis分布式集群(2)- 搭建工程引入redis

Springboot Redis分布式集群(2)- 搭建工程引入redis@(Markdown博客)1. 创建模块cnlm-springboot-redis 创建cnlm-blog工程的子模块cnlm...
  • musuny
  • musuny
  • 2017-07-21 23:35:40
  • 465
收藏助手
不良信息举报
您举报文章:基于springboot的redis集群配置
举报原因:
原因补充:

(最多只允许输入30个字)