Subversion Repositories SmartDukaan

Rev

Rev 29854 | Rev 30208 | 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 org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.CachingConfigurerSupport;
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.jedis.JedisConnectionFactory;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializationContext;

import java.time.Duration;

@Configuration
@EnableCaching
public class CacheConfig extends CachingConfigurerSupport {

        @Bean
        JedisConnectionFactory jedisConnectionFactory() {
                return new JedisConnectionFactory();
        }

        @Bean
        public RedisCacheConfiguration cacheConfiguration() {
                return RedisCacheConfiguration.defaultCacheConfig()
                                .entryTtl(Duration.ofMinutes(120))
                                .disableCachingNullValues()
                                .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer()));
        }

        @Bean
        public CacheManager cacheManager() {
                return RedisCacheManager.RedisCacheManagerBuilder.fromConnectionFactory(jedisConnectionFactory())
                                .cacheDefaults(cacheConfiguration().entryTtl(Duration.ofMinutes(5)))
                                .build();
        }


        @Bean
        public CacheManager timeoutCacheManager() {
                return RedisCacheManager.RedisCacheManagerBuilder.fromConnectionFactory(jedisConnectionFactory())
                                .cacheDefaults(cacheConfiguration().entryTtl(Duration.ofMinutes(5)))
                                .build();
        }

        @Bean
        public CacheManager timeout15CacheManager() {
                return RedisCacheManager.RedisCacheManagerBuilder.fromConnectionFactory(jedisConnectionFactory())
                                .cacheDefaults(cacheConfiguration().entryTtl(Duration.ofMinutes(15)))
                                .build();
        }

        @Bean
        public CacheManager oneDayCacheManager() {
                return RedisCacheManager.RedisCacheManagerBuilder.fromConnectionFactory(jedisConnectionFactory())
                                .cacheDefaults(cacheConfiguration().entryTtl(Duration.ofHours(8)))
                                .build();
        }


        @Bean
        public CacheManager twoMintimeoutCacheManager() {
                return RedisCacheManager.RedisCacheManagerBuilder.fromConnectionFactory(jedisConnectionFactory())
                                .cacheDefaults(cacheConfiguration().entryTtl(Duration.ofMinutes(2)))
                                .build();
        }

        @Bean
        public CacheManager thirtyMinsTimeOutCacheManager() {
                return RedisCacheManager.RedisCacheManagerBuilder.fromConnectionFactory(jedisConnectionFactory())
                                .cacheDefaults(cacheConfiguration().entryTtl(Duration.ofMinutes(30)))
                                .build();
        }

}