Subversion Repositories SmartDukaan

Rev

Rev 34715 | Rev 35171 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
22009 ashik.ali 1
package com.spice.profitmandi.dao.config;
2
 
30289 amit.gupta 3
import com.fasterxml.jackson.annotation.JsonTypeInfo;
4
import com.fasterxml.jackson.databind.ObjectMapper;
5
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
30213 amit.gupta 6
import com.github.benmanes.caffeine.cache.Caffeine;
22009 ashik.ali 7
import org.springframework.cache.CacheManager;
8
import org.springframework.cache.annotation.CachingConfigurerSupport;
9
import org.springframework.cache.annotation.EnableCaching;
30213 amit.gupta 10
import org.springframework.cache.caffeine.CaffeineCacheManager;
22009 ashik.ali 11
import org.springframework.context.annotation.Bean;
12
import org.springframework.context.annotation.Configuration;
30289 amit.gupta 13
import org.springframework.data.redis.cache.RedisCacheConfiguration;
14
import org.springframework.data.redis.cache.RedisCacheManager;
15
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
16
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
17
import org.springframework.data.redis.serializer.RedisSerializationContext;
22009 ashik.ali 18
 
30289 amit.gupta 19
import java.time.Duration;
30213 amit.gupta 20
import java.util.concurrent.TimeUnit;
22009 ashik.ali 21
 
22
@Configuration
23
@EnableCaching
23716 amit.gupta 24
public class CacheConfig extends CachingConfigurerSupport {
25
 
30213 amit.gupta 26
	@Override
22009 ashik.ali 27
	@Bean
30213 amit.gupta 28
	public CacheManager cacheManager() {
29
		CaffeineCacheManager cacheManager = new CaffeineCacheManager();
30
		return cacheManager;
30206 amit.gupta 31
	}
32
 
33
	@Bean
30213 amit.gupta 34
	public CacheManager timeoutCacheManager() {
35
		CaffeineCacheManager cacheManager = new CaffeineCacheManager();
36
		Caffeine<Object, Object> caffeine = Caffeine.newBuilder().expireAfterWrite(5, TimeUnit.MINUTES);
37
		cacheManager.setCaffeine(caffeine);
38
		return cacheManager;
30206 amit.gupta 39
	}
40
 
41
	@Bean
30213 amit.gupta 42
	public CacheManager timeout15CacheManager() {
43
		CaffeineCacheManager cacheManager = new CaffeineCacheManager();
44
		Caffeine<Object, Object> caffeine = Caffeine.newBuilder().expireAfterWrite(15, TimeUnit.MINUTES);
45
		cacheManager.setCaffeine(caffeine);
46
		return cacheManager;
22009 ashik.ali 47
	}
23716 amit.gupta 48
 
22009 ashik.ali 49
	@Bean
30213 amit.gupta 50
	public CacheManager oneDayCacheManager() {
51
		CaffeineCacheManager cacheManager = new CaffeineCacheManager();
52
		Caffeine<Object, Object> caffeine = Caffeine.newBuilder().expireAfterWrite(6, TimeUnit.HOURS);
53
		cacheManager.setCaffeine(caffeine);
54
		return cacheManager;
22009 ashik.ali 55
	}
30206 amit.gupta 56
 
30213 amit.gupta 57
 
29854 amit.gupta 58
	@Bean
30213 amit.gupta 59
	public CacheManager twoMintimeoutCacheManager() {
60
		CaffeineCacheManager cacheManager = new CaffeineCacheManager();
61
		Caffeine<Object, Object> caffeine = Caffeine.newBuilder().expireAfterWrite(2, TimeUnit.MINUTES);
62
		cacheManager.setCaffeine(caffeine);
63
		return cacheManager;
29854 amit.gupta 64
	}
23716 amit.gupta 65
 
23405 amit.gupta 66
	@Bean
34715 ranu 67
	public CacheManager fiveMintimeoutCacheManager() {
68
		CaffeineCacheManager cacheManager = new CaffeineCacheManager();
69
		Caffeine<Object, Object> caffeine = Caffeine.newBuilder().expireAfterWrite(5, TimeUnit.MINUTES);
70
		cacheManager.setCaffeine(caffeine);
71
		return cacheManager;
72
	}
73
 
74
	@Bean
30213 amit.gupta 75
	public CacheManager thirtyMinsTimeOutCacheManager() {
76
		CaffeineCacheManager cacheManager = new CaffeineCacheManager();
77
		Caffeine<Object, Object> caffeine = Caffeine.newBuilder().expireAfterWrite(30, TimeUnit.MINUTES);
78
		cacheManager.setCaffeine(caffeine);
79
		return cacheManager;
30289 amit.gupta 80
 
81
 
23405 amit.gupta 82
	}
22009 ashik.ali 83
 
30206 amit.gupta 84
 
30289 amit.gupta 85
	@Bean
30213 amit.gupta 86
	JedisConnectionFactory jedisConnectionFactory() {
87
		return new JedisConnectionFactory();
88
	}
89
 
22708 amit.gupta 90
	@Bean
30213 amit.gupta 91
	public RedisCacheConfiguration cacheConfiguration() {
92
		return RedisCacheConfiguration.defaultCacheConfig()
93
				.entryTtl(Duration.ofMinutes(120))
94
				.disableCachingNullValues()
95
				.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(
30289 amit.gupta 96
						new GenericJackson2JsonRedisSerializer(
97
								this.getObjectMapper().enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY))));
22708 amit.gupta 98
	}
99
 
30289 amit.gupta 100
	private ObjectMapper getObjectMapper() {
101
		ObjectMapper mapper = new ObjectMapper().registerModule(new JavaTimeModule());
102
		return mapper;
103
	}
104
 
105
	//Default Cache for 6 hours
23405 amit.gupta 106
	@Bean
30289 amit.gupta 107
	public CacheManager redisCacheManager() {
34828 amit 108
		return RedisCacheManager.RedisCacheManagerBuilder.fromConnectionFactory(jedisConnectionFactory())
33635 amit.gupta 109
				.cacheDefaults(cacheConfiguration().entryTtl(Duration.ofHours(6)))
34828 amit 110
				.build();
30289 amit.gupta 111
	}
33323 amit.gupta 112
	@Bean
113
	public CacheManager redisFortnightlyCacheManage() {
34828 amit 114
		return RedisCacheManager.RedisCacheManagerBuilder.fromConnectionFactory(jedisConnectionFactory())
33323 amit.gupta 115
				.cacheDefaults(cacheConfiguration().entryTtl(Duration.ofDays(15).minusMinutes(5)))
34828 amit 116
				.build();
33323 amit.gupta 117
	}
23405 amit.gupta 118
 
30305 amit.gupta 119
	@Bean
120
	public CacheManager redisEternalCacheManager() {
34828 amit 121
		return RedisCacheManager.RedisCacheManagerBuilder.fromConnectionFactory(jedisConnectionFactory())
30305 amit.gupta 122
				.cacheDefaults(cacheConfiguration().entryTtl(Duration.ZERO))
34828 amit 123
				.build();
30305 amit.gupta 124
	}
125
 
22009 ashik.ali 126
}