package com.imyeyu.spring.config; import com.imyeyu.spring.bean.RedisConfigParams; import com.imyeyu.spring.util.Redis; import io.lettuce.core.api.StatefulConnection; import org.apache.commons.pool2.impl.GenericObjectPoolConfig; import org.springframework.cache.annotation.CachingConfigurer; import org.springframework.cache.interceptor.KeyGenerator; import org.springframework.data.redis.connection.RedisPassword; import org.springframework.data.redis.connection.RedisStandaloneConfiguration; import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory; import org.springframework.data.redis.connection.lettuce.LettucePoolingClientConfiguration; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.RedisSerializer; import java.time.Duration; /** * 抽象 RedisConfig * * @author 夜雨 * @version 2021-11-21 10:00 */ public abstract class AbstractRedisConfig implements CachingConfigurer { /** * 创建 Redis 配置 */ protected AbstractRedisConfig() { } /** * 构建 Redis 基本配置 * * @return Redis 基本配置 */ protected abstract RedisConfigParams configParams(); /** * 连接池配置 *
参考: *
* GenericObjectPoolConfig<StatefulConnection<?, ?>> config = new GenericObjectPoolConfig<>(); * config.setMaxTotal(config.getMaxActive()); * config.setMinIdle(config.getMinIdle()); * config.setMaxIdle(config.getMaxIdle()); * config.setMaxWait(Duration.ofMillis(config.getMaxWait())); ** * @return GenericObjectPoolConfig */ public abstract GenericObjectPoolConfig
参考: *
* return (target, method, params) -> {
* StringBuilder sb = new StringBuilder();
* sb.append(target.getClass().getName());
* sb.append(method.getName());
* for (Object obj : params) {
* sb.append(obj.toString());
* }
* return sb.toString();
* };
*
*
* @return KeyGenerator
*/
public abstract KeyGenerator keyGenerator();
/**
* 构造自定义 RedisTemplate
*
* @param database 数据库
* @param keySerializer 键序列化方式
* @param 针对同一服务器不同数据库
*
* @param database 数据库
* @param keySerializer 键序列化方式
* @param valueSerializer 值序列化方式
* @param