17课:关于Springboot和JedisCluster结合使用,自定义缓存的序列化方式

17课:关于Springboot和JedisCluster结合使用,自定义缓存的序列化方式

简介

现在大部分项目多多少少都会碰到一下功能会使用到缓存的地方;本文通过redis集群进行演示
通过JedisCluster实现redis缓存操作的内容;同事自定义缓存的序列化方式,在通过客户端进行命令行操作方便查看对应的key-value 的值内容.

项目demo下载

项目结构

17课:关于Springboot和JedisCluster结合使用,自定义缓存的序列化方式

代码简介

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 里面可以自行下载使用;基本不需要动什么配置,修改一下自己的缓存服务器地址.密码即可

上一篇:openresty 连接redis


下一篇:apisix 基于openresty 的api 网关