स्प्रिंग बूट ऐप में कैशिंग सक्षम करना बहुत आसान है। आपको केवल तीन चरणों का पालन करना होगा।
- कैश कॉन्फ़िगरेशन परिभाषित करें
- EnableCaching को किसी भी कॉन्फ़िगरेशन क्लास में जोड़ें
- कैशमैनेजर बीन प्रदान करें
Redis के लिए, हमारे पास RedisCacheManager है जिसे कॉन्फ़िगर और बनाया जा सकता है।
कैश कॉन्फ़िगरेशन
@Configuration
@Getter
@Setter
@ConfigurationProperties(prefix = "cache")
public class CacheConfigurationProperties {
// Redis host name
private String redisHost;
// Redis port
private int redisPort;
// Default TTL
private long timeoutSeconds;
// TTL per cache, add enties for each cache
private Map<String, Long> cacheTtls;
}
गुणों या yaml फ़ाइल जैसे
. के माध्यम से उनके मान सेट करेंcache.redisHost=localhost
cache.redisPort=6379
cache.timeoutSeconds=1000
cache.cacheTtls.cach1=100
cache.cacheTtls.cach2=200
एक बार जब आप कॉन्फ़िगरेशन बना लेते हैं, तो आप बिल्डर द्वारा RedisCacheManger के लिए कैशे कॉन्फिगरेशन बना सकते हैं।
@Configuration
@EnableCaching
public class CacheConfig {
private static RedisCacheConfiguration createCacheConfiguration(long timeoutInSeconds) {
return RedisCacheConfiguration.defaultCacheConfig()
.entryTtl(Duration.ofSeconds(timeoutInSeconds));
}
@Bean
public LettuceConnectionFactory redisConnectionFactory(CacheConfigurationProperties properties) {
RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();
redisStandaloneConfiguration.setHostName(properties.getRedisHost());
redisStandaloneConfiguration.setPort(properties.getRedisPort());
return new LettuceConnectionFactory(redisStandaloneConfiguration);
}
@Bean
public RedisCacheConfiguration cacheConfiguration(CacheConfigurationProperties properties) {
return createCacheConfiguration(properties.getTimeoutSeconds());
}
@Bean
public CacheManager cacheManager(
RedisConnectionFactory redisConnectionFactory, CacheConfigurationProperties properties) {
Map<String, RedisCacheConfiguration> cacheConfigurations = new HashMap<>();
for (Entry<String, Long> cacheNameAndTimeout : properties.getCacheTtls().entrySet()) {
cacheConfigurations.put(
cacheNameAndTimeout.getKey(), createCacheConfiguration(cacheNameAndTimeout.getValue()));
}
return RedisCacheManager.builder(redisConnectionFactory)
.cacheDefaults(cacheConfiguration(properties))
.withInitialCacheConfigurations(cacheConfigurations)
.build();
}
}
यदि आप उसके अनुसार कैश गुणों को अपडेट करने के बजाय रेडिस क्लस्टर का उपयोग कर रहे हैं। इसमें कुछ बीन्स प्राथमिक हो जाएंगे यदि आप इन विधियों को निजी बनाने के बजाय कैश विशिष्ट बीन चाहते हैं।