本文共 7474 字,大约阅读时间需要 24 分钟。
###################以下为Redis增加的配置########################### redis: #单机配置 #host: 192.168.43.188 #port: 6379 timeout: 6000 password: 123456 ###################以下为redis哨兵增加的配置########################### sentinel: nodes: 192.168.43.234:26379,192.168.43.234:26380,192.168.43.234:26381 master: mymaster ###################以下为lettuce连接池增加的配置########################### lettuce: pool: max-active: 100 # 连接池最大连接数(使用负值表示没有限制) max-idle: 100 # 连接池中的最大空闲连接 min-idle: 50 # 连接池中的最小空闲连接 max-wait: 6000 # 连接池最大阻塞等待时间(使用负值表示没有限制 ###################以下为springcache增加的配置########################### cache: redis: use-key-prefix: true key-prefix: dev cache-null-values: false time-to-live: 20s
文件位置
package com.heilongjiang.qiqihal.config.Redisonfig;import org.apache.commons.pool2.impl.GenericObjectPoolConfig;import org.springframework.beans.factory.annotation.Value;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.data.redis.connection.*;import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;import org.springframework.data.redis.connection.lettuce.LettucePoolingClientConfiguration;import java.util.*;@Configuration@ConfigurationProperties(prefix = "spring.redis.sentinel")public class RedisSentinelConfig { private Setnodes; private String master; @Value("${spring.redis.timeout}") private long timeout; @Value("${spring.redis.password}") private String password; @Value("${spring.redis.lettuce.pool.max-idle}") private int maxIdle; @Value("${spring.redis.lettuce.pool.min-idle}") private int minIdle; @Value("${spring.redis.lettuce.pool.max-wait}") private long maxWait; @Value("${spring.redis.lettuce.pool.max-active}") private int maxActive; @Bean public RedisConnectionFactory lettuceConnectionFactory() { RedisSentinelConfiguration redisSentinelConfiguration = new RedisSentinelConfiguration(master, nodes); redisSentinelConfiguration.setPassword(RedisPassword.of(password.toCharArray())); GenericObjectPoolConfig genericObjectPoolConfig = new GenericObjectPoolConfig(); genericObjectPoolConfig.setMaxIdle(maxIdle); genericObjectPoolConfig.setMinIdle(minIdle); genericObjectPoolConfig.setMaxTotal(maxActive); genericObjectPoolConfig.setMaxWaitMillis(maxWait); LettucePoolingClientConfiguration lettuceClientConfiguration = LettucePoolingClientConfiguration.builder() .poolConfig(genericObjectPoolConfig) .build(); return new LettuceConnectionFactory(redisSentinelConfiguration, lettuceClientConfiguration); } public void setNodes(Set nodes) { this.nodes = nodes; } public void setMaster(String master) { this.master = master; }}
package com.heilongjiang.qiqihal.config.Redisonfig;import com.fasterxml.jackson.annotation.JsonAutoDetect;import com.fasterxml.jackson.annotation.PropertyAccessor;import com.fasterxml.jackson.databind.ObjectMapper;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;/** 将默认序列化改为Jackson2JsonRedisSerializer序列化,* */@Configurationpublic class RedisTemplateConfig { @Bean public RedisTemplateredisTemplate(LettuceConnectionFactory factory) { //创建Json序列化对象 Jackson2JsonRedisSerializer
package com.heilongjiang.qiqihal.config.Redisonfig;import com.fasterxml.jackson.annotation.JsonAutoDetect;import com.fasterxml.jackson.annotation.PropertyAccessor;import com.fasterxml.jackson.databind.ObjectMapper;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.cache.CacheManager;import org.springframework.cache.annotation.EnableCaching;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.data.redis.cache.RedisCacheConfiguration;import org.springframework.data.redis.cache.RedisCacheManager;import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;import org.springframework.data.redis.serializer.RedisSerializationContext;import org.springframework.data.redis.serializer.RedisSerializer;import org.springframework.data.redis.serializer.StringRedisSerializer;import java.time.Duration;/** 修改 CacheManager 接口,将默认序列化改为JSON序列化,并使用redis作为缓存* */@Configuration@EnableCaching//开启缓存@ConfigurationProperties(prefix = "spring.cache.redis")public class SpringCacheRedisConfig { private Duration timeToLive = Duration.ZERO; public void setTimeToLive(Duration timeToLive) { this.timeToLive = timeToLive; } @Bean public CacheManager cacheManager(LettuceConnectionFactory factory) { RedisSerializerredisSerializer = new StringRedisSerializer(); //创建Json序列化对象 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); // 将默认序列化改为Jackson2JsonRedisSerializer序列化 RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig() .entryTtl(timeToLive) .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(redisSerializer)) .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer)) .disableCachingNullValues(); // 使用redis作为缓存,进入 CacheManager 接口按Control+H查看 CacheManager 的实现类,其中 RedisCacheManager 与redis有关 RedisCacheManager cacheManager = RedisCacheManager.builder(factory) .cacheDefaults(config) .build(); return cacheManager; }}
转载地址:http://fleel.baihongyu.com/