Spring Cache + JedisCluster
时间:2019-09-09
本文章向大家介绍Spring Cache + JedisCluster,主要包括Spring Cache + JedisCluster使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1、JedisClusterConfig
@Configuration
public class JedisClusterConfig {
@Autowired
private RedisProperties redisProperties;
@Autowired
private GenericObjectPoolConfig poolConfig;
@Bean
@ConfigurationProperties(prefix = "redis.poolConfig")
public GenericObjectPoolConfig getRedisConfig() {
GenericObjectPoolConfig poolConfig = new JedisPoolConfig();
poolConfig.setMaxIdle(1000);
return poolConfig;
}
/**
* 注意: 这里返回的JedisCluster是单例的,并且可以直接注入到其他类中去使用
*
* @return
*/
@Bean
public JedisCluster getJedisCluster() {
// 获取服务器数组(这里要相信自己的输入,所以没有考虑空指针问题)
String[] serverArray = redisProperties.getJedisClusterNode().split(",");
Set<HostAndPort> nodes = new HashSet<HostAndPort>();
for (String ipPort : serverArray) {
String[] ipPortPair = ipPort.split(":");
nodes.add(new HostAndPort(ipPortPair[0].trim(), Integer
.valueOf(ipPortPair[1].trim())));
}
System.out.println(poolConfig.getMaxIdle());
if (StringUtils.isEmpty(redisProperties.getPassword())) {
return new JedisCluster(nodes, redisProperties.getConnectionTimeout(),
redisProperties.getSoTimeout(), redisProperties.getMaxAttempts(), poolConfig);
} else {
return new JedisCluster(nodes, redisProperties.getConnectionTimeout(),
redisProperties.getSoTimeout(), redisProperties.getMaxAttempts(),
redisProperties.getPassword(), poolConfig);
}
}
@Bean
public RedisClusterConfiguration getRedisCluster() {
RedisClusterConfiguration redisClusterConfiguration = new RedisClusterConfiguration();
Set<RedisNode> jedisClusterNodes = new HashSet<RedisNode>();
String[] add = redisProperties.getJedisClusterNode().split(",");
for (String temp : add) {
String[] hostAndPort = StringUtils.split(temp, ":");
jedisClusterNodes.add(new RedisNode(hostAndPort[0], Integer.parseInt(hostAndPort[1])));
}
redisClusterConfiguration.setClusterNodes(jedisClusterNodes);
return redisClusterConfiguration;
}
@Bean
public JedisConnectionFactory redisConnectionFactory(RedisClusterConfiguration redisClusterConfiguration, GenericObjectPoolConfig jedisPoolConfig) {
JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory(redisClusterConfiguration, (JedisPoolConfig) jedisPoolConfig);
//jedisConnectionFactory.setPassword("");
return jedisConnectionFactory;
}
@Bean
public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory cf) {
StringRedisTemplate redisTemplate = new StringRedisTemplate();
redisTemplate.setConnectionFactory(cf);
//序列化配置
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(om);
redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
redisTemplate.afterPropertiesSet();
return redisTemplate;
}
@Bean
public RedisCacheManager getRedisCacheManager(RedisTemplate redisTemplate) {
RedisCacheManager redisCacheManager = new RedisCacheManager(redisTemplate);
redisCacheManager.setDefaultExpiration(600L);
return redisCacheManager;
}
}
2、JedisClusterConfig
@EnableCaching
@Configuration
public class RedisCacheConfig extends CachingConfigurerSupport {
private volatile JedisConnectionFactory jedisConnectionFactory;
private volatile RedisTemplate<String, String> redisTemplate;
private volatile RedisCacheManager redisCacheManager;
public RedisCacheConfig() {
super();
}
/**
* 带参数的构造方法 初始化所有的成员变量
*
* @param jedisConnectionFactory
* @param redisTemplate
* @param redisCacheManager
*/
public RedisCacheConfig(JedisConnectionFactory jedisConnectionFactory,
RedisTemplate<String, String> redisTemplate,
RedisCacheManager redisCacheManager) {
this.jedisConnectionFactory = jedisConnectionFactory;
this.redisTemplate = redisTemplate;
this.redisCacheManager = redisCacheManager;
}
public JedisConnectionFactory getJedisConnecionFactory() {
return jedisConnectionFactory;
}
public RedisTemplate<String, String> getRedisTemplate() {
return redisTemplate;
}
public RedisCacheManager getRedisCacheManager() {
return redisCacheManager;
}
@Bean
@Override
public KeyGenerator keyGenerator() {
return new KeyGenerator() {
@Override
public Object generate(Object o, Method method, Object... params) {
StringBuilder sb = new StringBuilder();
sb.append(o.getClass().getName());
sb.append(".");
sb.append(method.getName());
sb.append(".");
for (Object param : params) {
sb.append(param.toString());
}
return sb.toString();
}
};
}
}
原文地址:https://www.cnblogs.com/frontlook/p/11494632.html
- 关于drop user的cascade选项解惑(52天)
- ORACLE数据文件名导致的奇怪问题 (51天)
- linux下挂载新硬盘和分区的步骤 (50天)
- 通过shell脚本生成数据统计信息的报表 (笔记65天)
- 物化视图全量刷新的简单测试(63天)
- Golang语言社区--Go操作CSV文件
- TiDB 源码阅读系列文章(四)Insert 语句概览
- 食品安全溯源区块链解决方案探索
- Docker 简介与安装
- 经典Java面试题收集
- 关于update语句的性能测试(62天)
- 物化视图刷新的问题及分析(61天)
- 使用python+机器学习方法进行情感分析(详细步骤)
- 关于primary key和foreign key的问题处理(60天)
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- [Centos7]linux运行django项目报错no module named _ssl
- [Centos7]在非标准端口上运行SSH
- [Centos7]安装及配置bind(DNS服务)
- [Centos7.2]关于crontab报错
- [Centos7.2]关于升级python后防火墙无法启动
- [Centos7]关于限制IP通过ssh登陆
- Apache安装SSL证证书
- 打卡群刷题总结0717——不同路径 II
- [Centos7.2]Django挂载后台运行
- [Centos7+python3]IPy模块安装
- KVM实现分布式部署lamp并安装WordPress
- NumPy学的还不错?来试试这20题!
- 打卡群刷题总结0718——最小路径和
- linux之iptables应用详解
- MHA实现mysql的高可用集群