Subversion Repositories SmartDukaan

Rev

Rev 33635 | Rev 34715 | 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
30213 amit.gupta 67
	public CacheManager thirtyMinsTimeOutCacheManager() {
68
		CaffeineCacheManager cacheManager = new CaffeineCacheManager();
69
		Caffeine<Object, Object> caffeine = Caffeine.newBuilder().expireAfterWrite(30, TimeUnit.MINUTES);
70
		cacheManager.setCaffeine(caffeine);
71
		return cacheManager;
30289 amit.gupta 72
 
73
 
23405 amit.gupta 74
	}
22009 ashik.ali 75
 
30206 amit.gupta 76
 
30289 amit.gupta 77
	@Bean
30213 amit.gupta 78
	JedisConnectionFactory jedisConnectionFactory() {
79
		return new JedisConnectionFactory();
80
	}
81
 
22708 amit.gupta 82
	@Bean
30213 amit.gupta 83
	public RedisCacheConfiguration cacheConfiguration() {
84
		return RedisCacheConfiguration.defaultCacheConfig()
85
				.entryTtl(Duration.ofMinutes(120))
86
				.disableCachingNullValues()
87
				.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(
30289 amit.gupta 88
						new GenericJackson2JsonRedisSerializer(
89
								this.getObjectMapper().enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY))));
22708 amit.gupta 90
	}
91
 
30289 amit.gupta 92
	private ObjectMapper getObjectMapper() {
93
		ObjectMapper mapper = new ObjectMapper().registerModule(new JavaTimeModule());
94
		return mapper;
95
	}
96
 
97
	//Default Cache for 6 hours
23405 amit.gupta 98
	@Bean
30289 amit.gupta 99
	public CacheManager redisCacheManager() {
34610 vikas.jang 100
		CaffeineCacheManager cacheManager = new CaffeineCacheManager();
101
		Caffeine<Object, Object> caffeine = Caffeine.newBuilder().expireAfterWrite(12, TimeUnit.HOURS);
102
		cacheManager.setCaffeine(caffeine);
103
		return cacheManager;
104
		/*return RedisCacheManager.RedisCacheManagerBuilder.fromConnectionFactory(jedisConnectionFactory())
33635 amit.gupta 105
				.cacheDefaults(cacheConfiguration().entryTtl(Duration.ofHours(6)))
34610 vikas.jang 106
				.build();*/
30289 amit.gupta 107
	}
33323 amit.gupta 108
	//Default Cache for 6 hours
109
	@Bean
110
	public CacheManager redisFortnightlyCacheManage() {
34610 vikas.jang 111
		CaffeineCacheManager cacheManager = new CaffeineCacheManager();
112
		Caffeine<Object, Object> caffeine = Caffeine.newBuilder().expireAfterWrite(12, TimeUnit.HOURS);
113
		cacheManager.setCaffeine(caffeine);
114
		return cacheManager;
115
		/*return RedisCacheManager.RedisCacheManagerBuilder.fromConnectionFactory(jedisConnectionFactory())
33323 amit.gupta 116
				.cacheDefaults(cacheConfiguration().entryTtl(Duration.ofDays(15).minusMinutes(5)))
34610 vikas.jang 117
				.build();*/
33323 amit.gupta 118
	}
23405 amit.gupta 119
 
30305 amit.gupta 120
	@Bean
121
	public CacheManager redisEternalCacheManager() {
34610 vikas.jang 122
		CaffeineCacheManager cacheManager = new CaffeineCacheManager();
123
		Caffeine<Object, Object> caffeine = Caffeine.newBuilder().expireAfterWrite(12, TimeUnit.HOURS);
124
		cacheManager.setCaffeine(caffeine);
125
		return cacheManager;
126
		/*return RedisCacheManager.RedisCacheManagerBuilder.fromConnectionFactory(jedisConnectionFactory())
30305 amit.gupta 127
				.cacheDefaults(cacheConfiguration().entryTtl(Duration.ZERO))
34610 vikas.jang 128
				.build();*/
30305 amit.gupta 129
	}
130
 
22009 ashik.ali 131
}