17课:关于Springboot和JedisCluster结合使用,自定义缓存的序列化方式
简介
现在大部分项目多多少少都会碰到一下功能会使用到缓存的地方;本文通过redis集群进行演示
通过JedisCluster实现redis缓存操作的内容;同事自定义缓存的序列化方式,在通过客户端进行命令行操作方便查看对应的key-value 的值内容.
项目结构
代码简介
1. redis.properties文件
主要是关于redis的一些配置项内容包含集群的服务器地址,密码等配置项内容
cache.redis.servers=51000:redis;51001:redis;51002:redis
cache.redis.password=gm2018
cache.redis.maxWaitMillis=1000
cache.redis.maxTotal=1000
cache.redis.minIdle=8
cache.redis.maxIdle=100
cache.redis.testOnBorrow=true
cache.redis.testOnReturn=true
cache.redis.connectionTimeout=10000
cache.redis.soTimeout=800
cache.redis.maxRedirections=6
2.pom.xml文件
引入JedisCluster
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.3.0</version>
</dependency>
3.RedisConfig.java
里面关于JedisCluster配置项内容然后主要通过RedisUtil 工具类中的方法实现里面的不同数据格式缓存的调用
@Configuration
@ConfigurationProperties(prefix="cache.redis")
@PropertySource(value = "classpath:redis.properties", encoding = "UTF-8")
public class RedisConfig {
//redis服务
private String servers;
//密码
private String password;
//poolConfig配置
private boolean testOnBorrow;
private boolean testOnReturn;
private int maxTotal;
private int maxIdle;
private int minIdle;
private long maxWaitMillis;
private int connectionTimeout;
private int soTimeout;
private int maxRedirections;
/**
* 通过获取配置文件进行JedisCluster配置.
* @author khy
* @createTime 2020年11月20日下午3:51:45
* @return
*/
@Bean("jedisCluster")
public JedisCluster createJedisCluster(){
try {
Set<HostAndPort> jedisClusterNode = new HashSet();
//这个是切分redis集群的配置,因为是同一台机器所以端口不同所以端口放前面了
Splitter.on(";").withKeyValueSeparator(":").split(servers).forEach((k,v)->{
if(StringUtils.isNoneBlank(k,v)){
jedisClusterNode.add(new HostAndPort(v, Integer.valueOf(k)));
}
});
GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig();
poolConfig.setMaxWaitMillis(maxWaitMillis);
poolConfig.setMaxTotal(maxTotal);
poolConfig.setMaxIdle(maxIdle);
poolConfig.setMinIdle(minIdle);
poolConfig.setTestOnBorrow(testOnBorrow);
poolConfig.setTestOnReturn(testOnReturn);
JedisCluster cluster = new JedisCluster(jedisClusterNode, connectionTimeout, soTimeout,maxRedirections,password,poolConfig);
return cluster;
} catch (Exception e) {
throw new RuntimeException("redis服务地址配置无效不符合条件");
}
}
// get/set方法省略
}
总结
项目中通过RedisUtil工具类完成我们对不同数据类型的缓存数据操作的
设置key/value 时将不同类型的数据进行序列化存储.整套的代码已经全部在上面的demo 里面可以自行下载使用;基本不需要动什么配置,修改一下自己的缓存服务器地址.密码即可