如果只需要整合redis的单机版,只需要在redis.conf中进行如下配置:
@Configuration
@PropertySource("classpath:config/redis.properties"
)
public class RedisConfig {
@Value("${redis.maxIdle}"
)
private Integer maxIdle;
@Value("${redis.maxTotal}"
)
private Integer maxTotal;
@Value("${redis.maxWaitMillis}"
)
private Integer maxWaitMillis;
@Value("${redis.minEvictableIdleTimeMillis}"
)
private Integer minEvictableIdleTimeMillis;
@Value("${redis.numTestsPerEvictionRun}"
)
private Integer numTestsPerEvictionRun;
@Value("${redis.timeBetweenEvictionRunsMillis}"
)
private long timeBetweenEvictionRunsMillis;
@Value("${redis.testOnBorrow}"
)
private boolean testOnBorrow;
@Value("${redis.testWhileIdle}"
)
private boolean testWhileIdle;
@Value("${spring.redis.cluster.nodes}"
)
private String clusterNodes;
@Value("${spring.redis.cluster.max-redirects}"
)
private Integer mmaxRedirectsac;
/**
* JedisPoolConfig 连接池
* @return
*/
@Bean
public JedisPoolConfig jedisPoolConfig() {
JedisPoolConfig jedisPoolConfig =
new JedisPoolConfig();
// 最大空闲数
jedisPoolConfig.setMaxIdle(maxIdle);
// 连接池的最大数据库连接数
jedisPoolConfig.setMaxTotal(maxTotal);
// 最大建立连接等待时间
jedisPoolConfig.setMaxWaitMillis(maxWaitMillis);
// 逐出连接的最小空闲时间 默认1800000毫秒(30分钟)
jedisPoolConfig.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
// 每次逐出检查时 逐出的最大数目 如果为负数就是 : 1/abs(n), 默认3
jedisPoolConfig.setNumTestsPerEvictionRun(numTestsPerEvictionRun);
// 逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1
jedisPoolConfig.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
// 是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个
jedisPoolConfig.setTestOnBorrow(testOnBorrow);
// 在空闲时检查有效性, 默认false
jedisPoolConfig.setTestWhileIdle(testWhileIdle);
return jedisPoolConfig;
}
/**
* 单机版配置
* @Title: JedisConnectionFactory
* @param @param jedisPoolConfig
* @param @return
* @return JedisConnectionFactory
* @autor lpl
* @date 2018年2月24日
* @throws
*/
@Bean
public JedisConnectionFactory JedisConnectionFactory(JedisPoolConfig jedisPoolConfig){
JedisConnectionFactory JedisConnectionFactory =
new JedisConnectionFactory(jedisPoolConfig);
//连接池
JedisConnectionFactory.setPoolConfig(jedisPoolConfig);
//IP地址
JedisConnectionFactory.setHostName("192.168.177.128"
);
//端口号
JedisConnectionFactory.setPort(6379
);
//如果Redis设置有密码
//JedisConnectionFactory.setPassword(password);
//客户端超时时间单位是毫秒
JedisConnectionFactory.setTimeout(5000
);
return JedisConnectionFactory;
}
/**
* 实例化 RedisTemplate 对象
*
* @return
*/
@Bean
public RedisTemplate<String, Object>
functionDomainRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<String, Object> redisTemplate =
new RedisTemplate<>
();
initDomainRedisTemplate(redisTemplate, redisConnectionFactory);
return redisTemplate;
}
/**
* 设置数据存入 redis 的序列化方式,并开启事务
*
* @param redisTemplate
* @param factory
*/
private void initDomainRedisTemplate(RedisTemplate<String, Object>
redisTemplate, RedisConnectionFactory factory) {
//如果不配置Serializer,那么存储的时候缺省使用String,如果用User类型存储,那么会提示错误User can't cast to String!
redisTemplate.setKeySerializer(
new StringRedisSerializer());
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
// 开启事务
redisTemplate.setEnableTransactionSupport(
true);
redisTemplate.setConnectionFactory(factory);
}
/**
* 注入封装RedisTemplate
* @Title: redisUtil
* @return RedisUtil
* @autor lpl
* @date 2017年12月21日
* @throws
*/
@Bean(name = "redisUtil"
)
public RedisUtil redisUtil(RedisTemplate<String, Object>
redisTemplate) {
RedisUtil redisUtil =
new RedisUtil();
redisUtil.setRedisTemplate(redisTemplate);
return redisUtil;
}
springboot整合redis集群:
@Configuration
@PropertySource("classpath:config/redis.properties"
)
public class RedisConfig {
@Value("${redis.maxIdle}"
)
private Integer maxIdle;
@Value("${redis.maxTotal}"
)
private Integer maxTotal;
@Value("${redis.maxWaitMillis}"
)
private Integer maxWaitMillis;
@Value("${redis.minEvictableIdleTimeMillis}"
)
private Integer minEvictableIdleTimeMillis;
@Value("${redis.numTestsPerEvictionRun}"
)
private Integer numTestsPerEvictionRun;
@Value("${redis.timeBetweenEvictionRunsMillis}"
)
private long timeBetweenEvictionRunsMillis;
@Value("${redis.testOnBorrow}"
)
private boolean testOnBorrow;
@Value("${redis.testWhileIdle}"
)
private boolean testWhileIdle;
@Value("${spring.redis.cluster.nodes}"
)
private String clusterNodes;
@Value("${spring.redis.cluster.max-redirects}"
)
private Integer mmaxRedirectsac;
/**
* JedisPoolConfig 连接池
* @return
*/
@Bean
public JedisPoolConfig jedisPoolConfig() {
JedisPoolConfig jedisPoolConfig =
new JedisPoolConfig();
// 最大空闲数
jedisPoolConfig.setMaxIdle(maxIdle);
// 连接池的最大数据库连接数
jedisPoolConfig.setMaxTotal(maxTotal);
// 最大建立连接等待时间
jedisPoolConfig.setMaxWaitMillis(maxWaitMillis);
// 逐出连接的最小空闲时间 默认1800000毫秒(30分钟)
jedisPoolConfig.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
// 每次逐出检查时 逐出的最大数目 如果为负数就是 : 1/abs(n), 默认3
jedisPoolConfig.setNumTestsPerEvictionRun(numTestsPerEvictionRun);
// 逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1
jedisPoolConfig.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
// 是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个
jedisPoolConfig.setTestOnBorrow(testOnBorrow);
// 在空闲时检查有效性, 默认false
jedisPoolConfig.setTestWhileIdle(testWhileIdle);
return jedisPoolConfig;
}
/**
* Redis集群的配置
* @return RedisClusterConfiguration
* @autor lpl
* @date 2017年12月22日
* @throws
*/
@Bean
public RedisClusterConfiguration redisClusterConfiguration(){
RedisClusterConfiguration redisClusterConfiguration =
new RedisClusterConfiguration();
//Set<RedisNode> clusterNodes
String[] serverArray = clusterNodes.split(","
);
Set<RedisNode> nodes =
new HashSet<RedisNode>
();
for(String ipPort:serverArray){
String[] ipAndPort = ipPort.split(":"
);
nodes.add(new RedisNode(ipAndPort[0].trim(),Integer.valueOf(ipAndPort[1
])));
}
redisClusterConfiguration.setClusterNodes(nodes);
redisClusterConfiguration.setMaxRedirects(mmaxRedirectsac);
return redisClusterConfiguration;
}
/**
* 配置工厂
* @Title: JedisConnectionFactory
* @param @param jedisPoolConfig
* @param @return
* @return JedisConnectionFactory
* @autor lpl
* @date 2017年12月22日
* @throws
*/
@Bean
public JedisConnectionFactory JedisConnectionFactory(JedisPoolConfig jedisPoolConfig,RedisClusterConfiguration redisClusterConfiguration){
JedisConnectionFactory JedisConnectionFactory =
new JedisConnectionFactory(redisClusterConfiguration,jedisPoolConfig);
return JedisConnectionFactory;
}
/**
* 实例化 RedisTemplate 对象
*
* @return
*/
@Bean
public RedisTemplate<String, Object>
functionDomainRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<String, Object> redisTemplate =
new RedisTemplate<>
();
initDomainRedisTemplate(redisTemplate, redisConnectionFactory);
return redisTemplate;
}
/**
* 设置数据存入 redis 的序列化方式,并开启事务
*
* @param redisTemplate
* @param factory
*/
private void initDomainRedisTemplate(RedisTemplate<String, Object>
redisTemplate, RedisConnectionFactory factory) {
//如果不配置Serializer,那么存储的时候缺省使用String,如果用User类型存储,那么会提示错误User can't cast to String!
redisTemplate.setKeySerializer(
new StringRedisSerializer());
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
// 开启事务
redisTemplate.setEnableTransactionSupport(
true);
redisTemplate.setConnectionFactory(factory);
}
/**
* 注入封装RedisTemplate
* @Title: redisUtil
* @return RedisUtil
* @autor lpl
* @date 2017年12月21日
* @throws
*/
@Bean(name = "redisUtil"
)
public RedisUtil redisUtil(RedisTemplate<String, Object>
redisTemplate) {
RedisUtil redisUtil =
new RedisUtil();
redisUtil.setRedisTemplate(redisTemplate);
return redisUtil;
}
springboot整合redis哨兵模式:
@Configuration
@PropertySource("classpath:config/redis.properties"
)
public class RedisConfig {
@Value("${redis.maxIdle}"
)
private Integer maxIdle;
@Value("${redis.maxTotal}"
)
private Integer maxTotal;
@Value("${redis.maxWaitMillis}"
)
private Integer maxWaitMillis;
@Value("${redis.minEvictableIdleTimeMillis}"
)
private Integer minEvictableIdleTimeMillis;
@Value("${redis.numTestsPerEvictionRun}"
)
private Integer numTestsPerEvictionRun;
@Value("${redis.timeBetweenEvictionRunsMillis}"
)
private long timeBetweenEvictionRunsMillis;
@Value("${redis.testOnBorrow}"
)
private boolean testOnBorrow;
@Value("${redis.testWhileIdle}"
)
private boolean testWhileIdle;
@Value("${spring.redis.cluster.nodes}"
)
private String clusterNodes;
@Value("${spring.redis.cluster.max-redirects}"
)
private Integer mmaxRedirectsac;
/**
* JedisPoolConfig 连接池
* @return
*/
@Bean
public JedisPoolConfig jedisPoolConfig() {
JedisPoolConfig jedisPoolConfig =
new JedisPoolConfig();
// 最大空闲数
jedisPoolConfig.setMaxIdle(maxIdle);
// 连接池的最大数据库连接数
jedisPoolConfig.setMaxTotal(maxTotal);
// 最大建立连接等待时间
jedisPoolConfig.setMaxWaitMillis(maxWaitMillis);
// 逐出连接的最小空闲时间 默认1800000毫秒(30分钟)
jedisPoolConfig.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
// 每次逐出检查时 逐出的最大数目 如果为负数就是 : 1/abs(n), 默认3
jedisPoolConfig.setNumTestsPerEvictionRun(numTestsPerEvictionRun);
// 逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1
jedisPoolConfig.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
// 是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个
jedisPoolConfig.setTestOnBorrow(testOnBorrow);
// 在空闲时检查有效性, 默认false
jedisPoolConfig.setTestWhileIdle(testWhileIdle);
return jedisPoolConfig;
}
/**
* 配置redis的哨兵
* @return RedisSentinelConfiguration
* @autor lpl
* @date 2017年12月21日
* @throws
*/
@Bean
public RedisSentinelConfiguration sentinelConfiguration(){
RedisSentinelConfiguration redisSentinelConfiguration =
new RedisSentinelConfiguration();
//配置matser的名称
RedisNode redisNode =
new RedisNode(hostName, port);
redisNode.setName("mymaster"
);
redisSentinelConfiguration.master(redisNode);
//配置redis的哨兵sentinel
RedisNode senRedisNode =
new RedisNode(senHost1,senPort1);
Set<RedisNode> redisNodeSet =
new HashSet<>
();
redisNodeSet.add(senRedisNode);
redisSentinelConfiguration.setSentinels(redisNodeSet);
return redisSentinelConfiguration;
}
/**
* 配置工厂
* @param jedisPoolConfig
* @return
*/
@Bean
public JedisConnectionFactory jedisConnectionFactory(JedisPoolConfig jedisPoolConfig,RedisSentinelConfiguration sentinelConfig) {
JedisConnectionFactory jedisConnectionFactory =
new JedisConnectionFactory(sentinelConfig,jedisPoolConfig);
return jedisConnectionFactory;
}
/**
* 实例化 RedisTemplate 对象
*
* @return
*/
@Bean
public RedisTemplate<String, Object>
functionDomainRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<String, Object> redisTemplate =
new RedisTemplate<>
();
initDomainRedisTemplate(redisTemplate, redisConnectionFactory);
return redisTemplate;
}
/**
* 设置数据存入 redis 的序列化方式,并开启事务
*
* @param redisTemplate
* @param factory
*/
private void initDomainRedisTemplate(RedisTemplate<String, Object>
redisTemplate, RedisConnectionFactory factory) {
//如果不配置Serializer,那么存储的时候缺省使用String,如果用User类型存储,那么会提示错误User can't cast to String!
redisTemplate.setKeySerializer(
new StringRedisSerializer());
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
// 开启事务
redisTemplate.setEnableTransactionSupport(
true);
redisTemplate.setConnectionFactory(factory);
}
/**
* 封装RedisTemplate
* @Title: redisUtil
* @return RedisUtil
* @autor lpl
* @date 2017年12月21日
* @throws
*/
@Bean(name = "redisUtil"
)
public RedisUtil redisUtil(RedisTemplate<String, Object>
redisTemplate) {
RedisUtil redisUtil =
new RedisUtil();
redisUtil.setRedisTemplate(redisTemplate);
return redisUtil;
}
转载于:https://www.cnblogs.com/wzdnwyyu/p/11163537.html