Rev 35600 | Rev 36057 | Go to most recent revision | View as "text/plain" | Blame | Compare with Previous | Last modification | View Log | RSS feed
package com.spice.profitmandi.dao.config;import com.fasterxml.jackson.annotation.JsonTypeInfo;import com.fasterxml.jackson.databind.ObjectMapper;import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;import com.github.benmanes.caffeine.cache.Caffeine;import org.springframework.cache.CacheManager;import org.springframework.cache.annotation.CachingConfigurerSupport;import org.springframework.cache.annotation.EnableCaching;import org.springframework.cache.caffeine.CaffeineCacheManager;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.PropertySource;import org.springframework.data.redis.cache.RedisCacheConfiguration;import org.springframework.data.redis.cache.RedisCacheManager;import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;import org.springframework.data.redis.serializer.RedisSerializationContext;import java.time.Duration;import java.util.HashMap;import java.util.Map;import java.util.concurrent.TimeUnit;@Configuration@EnableCaching@PropertySource("classpath:application.properties")public class CacheConfig extends CachingConfigurerSupport {@Override@Beanpublic CacheManager cacheManager() {CaffeineCacheManager cacheManager = new CaffeineCacheManager();return cacheManager;}@Beanpublic CacheManager timeoutCacheManager() {CaffeineCacheManager cacheManager = new CaffeineCacheManager();Caffeine<Object, Object> caffeine = Caffeine.newBuilder().expireAfterWrite(5, TimeUnit.MINUTES);cacheManager.setCaffeine(caffeine);return cacheManager;}@Beanpublic CacheManager timeout15CacheManager() {CaffeineCacheManager cacheManager = new CaffeineCacheManager();Caffeine<Object, Object> caffeine = Caffeine.newBuilder().expireAfterWrite(15, TimeUnit.MINUTES);cacheManager.setCaffeine(caffeine);return cacheManager;}@Beanpublic CacheManager oneDayCacheManager() {CaffeineCacheManager cacheManager = new CaffeineCacheManager();Caffeine<Object, Object> caffeine = Caffeine.newBuilder().expireAfterWrite(6, TimeUnit.HOURS);cacheManager.setCaffeine(caffeine);return cacheManager;}@Beanpublic CacheManager twoMintimeoutCacheManager() {CaffeineCacheManager cacheManager = new CaffeineCacheManager();Caffeine<Object, Object> caffeine = Caffeine.newBuilder().expireAfterWrite(2, TimeUnit.MINUTES);cacheManager.setCaffeine(caffeine);return cacheManager;}@Beanpublic CacheManager fiveMintimeoutCacheManager() {CaffeineCacheManager cacheManager = new CaffeineCacheManager();Caffeine<Object, Object> caffeine = Caffeine.newBuilder().expireAfterWrite(5, TimeUnit.MINUTES);cacheManager.setCaffeine(caffeine);return cacheManager;}@Beanpublic CacheManager thirtyMinsTimeOutCacheManager() {CaffeineCacheManager cacheManager = new CaffeineCacheManager();Caffeine<Object, Object> caffeine = Caffeine.newBuilder().expireAfterWrite(30, TimeUnit.MINUTES);cacheManager.setCaffeine(caffeine);return cacheManager;}@BeanJedisConnectionFactory jedisConnectionFactory() {return new JedisConnectionFactory();}@Beanpublic RedisCacheConfiguration cacheConfiguration() {return RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofMinutes(120)).disableCachingNullValues().serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer(this.getObjectMapper().enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY))));}private ObjectMapper getObjectMapper() {ObjectMapper mapper = new ObjectMapper().registerModule(new JavaTimeModule());return mapper;}@Beanpublic CacheManager redisVeryShortCacheManager() {return RedisCacheManager.RedisCacheManagerBuilder.fromConnectionFactory(jedisConnectionFactory()).cacheDefaults(cacheConfiguration().entryTtl(Duration.ofMinutes(15))).build();}@Beanpublic CacheManager redisShortCacheManager() {return RedisCacheManager.RedisCacheManagerBuilder.fromConnectionFactory(jedisConnectionFactory()).cacheDefaults(cacheConfiguration().entryTtl(Duration.ofMinutes(60))).build();}@Beanpublic CacheManager redisCacheManager() {Map<String, RedisCacheConfiguration> cacheConfigurations = new HashMap<>();cacheConfigurations.put("offer.achievement", cacheConfiguration().entryTtl(Duration.ofMinutes(30)));return RedisCacheManager.RedisCacheManagerBuilder.fromConnectionFactory(jedisConnectionFactory()).cacheDefaults(cacheConfiguration().entryTtl(Duration.ofHours(6))).withInitialCacheConfigurations(cacheConfigurations).build();}@Beanpublic CacheManager redisOneDayCacheManager() {return RedisCacheManager.RedisCacheManagerBuilder.fromConnectionFactory(jedisConnectionFactory()).cacheDefaults(cacheConfiguration().entryTtl(Duration.ofDays(1))).build();}@Beanpublic CacheManager redisFortnightlyCacheManage() {return RedisCacheManager.RedisCacheManagerBuilder.fromConnectionFactory(jedisConnectionFactory()).cacheDefaults(cacheConfiguration().entryTtl(Duration.ofDays(15).minusMinutes(5))).build();}@Beanpublic CacheManager redisEternalCacheManager() {return RedisCacheManager.RedisCacheManagerBuilder.fromConnectionFactory(jedisConnectionFactory()).cacheDefaults(cacheConfiguration().entryTtl(Duration.ZERO)).build();}}