赞
踩
- # REDIS (RedisProperties)
- # Redis数据库索引(默认为0)
- spring.redis.database=16
- # Redis服务器地址
- spring.redis.host=127.0.0.1
- # Redis服务器连接端口
- spring.redis.port=6379
- # Redis服务器连接密码(默认为空)
- spring.redis.password=
- # 连接池最大连接数(使用负值表示没有限制)
- spring.redis.lettuce.pool.max-active=8
- # 连接池最大阻塞等待时间(使用负值表示没有限制)
- spring.redis.lettuce.pool.max-wait=-1ms
- # 连接池中的最大空闲连接
- spring.redis.lettuce.pool.max-idle=8
- # 连接池中的最小空闲连接
- spring.redis.lettuce.pool.min-idle=0
- # 连接超时时间(毫秒)
- spring.redis.timeout=0ms
- package com.zhy.db.config;
-
-
- import com.fasterxml.jackson.annotation.JsonAutoDetect;
- import com.fasterxml.jackson.annotation.PropertyAccessor;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.cache.CacheManager;
- import org.springframework.cache.annotation.*;
- import org.springframework.cache.interceptor.KeyGenerator;
- 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.cache.RedisCacheWriter;
- import org.springframework.data.redis.connection.RedisConnectionFactory;
- import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
- import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
- import org.springframework.data.redis.core.RedisTemplate;
- 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 org.springframework.transaction.annotation.EnableTransactionManagement;
-
- import java.time.Duration;
-
-
- /**
- * redis缓存配置
- *
- * @author zhy
- */
- @Configuration
- @EnableTransactionManagement
- @CacheConfig
- @EnableCaching
- public class RedisConfig {
-
- @Value("${spring.redis.host}")
- private String host;
-
- @Value("${spring.redis.port}")
- private Integer port;
-
- @Value("${spring.redis.password}")
- private String password;
-
- /**
- * redis连接工厂
- *
- * @return LettuceConnectionFactory
- */
- @Bean
- public LettuceConnectionFactory redisConnectionFactory() {
- return new LettuceConnectionFactory(new RedisStandaloneConfiguration(host, port));
- }
-
-
- @Bean
- public RedisTemplate redisTemplate(RedisConnectionFactory factory) {
- RedisTemplate<?, ?> redisTemplate = new RedisTemplate<>();
- redisTemplate.setConnectionFactory(factory);
- RedisSerializer redisSerializer = new StringRedisSerializer();
- redisTemplate.setKeySerializer(redisSerializer);
- redisTemplate.setHashKeySerializer(redisSerializer);
- Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = createJacksonRedisSerializer();
- redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
- redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
- redisTemplate.afterPropertiesSet();
- return redisTemplate;
- }
-
- /**
- * 缓存管理器
- */
- @Bean
- public CacheManager cacheManager(RedisConnectionFactory connectionFactory) {
- RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig().entryTtl(
- Duration.ofMinutes(30)).serializeKeysWith(RedisSerializationContext.SerializationPair
- .fromSerializer(new StringRedisSerializer())).serializeValuesWith(RedisSerializationContext
- .SerializationPair.fromSerializer(createJacksonRedisSerializer())).disableCachingNullValues();
- RedisCacheWriter redisCacheWriter = RedisCacheWriter.nonLockingRedisCacheWriter(connectionFactory);
- return new RedisCacheManager(redisCacheWriter, config);
- }
-
- private Jackson2JsonRedisSerializer<Object> createJacksonRedisSerializer() {
- Jackson2JsonRedisSerializer<Object> 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);
- return jackson2JsonRedisSerializer;
- }
-
- @Bean
- public KeyGenerator keyGenerator() {
- return (target, method, params) -> {
- StringBuilder sb = new StringBuilder();
- String[] value = new String[1];
- Cacheable cacheable = method.getAnnotation(Cacheable.class);
- if (cacheable != null) {
- value = cacheable.value();
- }
- CachePut cachePut = method.getAnnotation(CachePut.class);
- if (cachePut != null) {
- value = cachePut.value();
- }
- CacheEvict cacheEvict = method.getAnnotation(CacheEvict.class);
- if (cacheEvict != null) {
- value = cacheEvict.value();
- }
- sb.append(value[0]);
- for (Object obj : params) {
- sb.append(":").append(obj.toString());
- }
- return sb.toString();
- };
- }
- }
@Cacheable(value = "signIn", key = "#root.methodName +':'+ T(java.time.LocalDate).now()+':'+ #username")
@EnableCaching
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。