Redis
 sql >> डेटाबेस >  >> NoSQL >> Redis

स्प्रिंग डेटा कैश के साथ रेडिस का उपयोग करते समय वितरित/संकुल कैश को कैसे सक्षम करें

स्प्रिंग बूट ऐप में कैशिंग सक्षम करना बहुत आसान है। आपको केवल तीन चरणों का पालन करना होगा।

  • कैश कॉन्फ़िगरेशन परिभाषित करें
  • 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();
  }
}

यदि आप उसके अनुसार कैश गुणों को अपडेट करने के बजाय रेडिस क्लस्टर का उपयोग कर रहे हैं। इसमें कुछ बीन्स प्राथमिक हो जाएंगे यदि आप इन विधियों को निजी बनाने के बजाय कैश विशिष्ट बीन चाहते हैं।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. RedisTemplate की समय सीमा समाप्त काम नहीं करता

  2. रेडिस के साथ लारवेल कैशिंग बहुत धीमी है

  3. Node.JS ऑब्जेक्ट प्रोटोटाइप केवल Redis के साथ एक ऑब्जेक्ट या नल हो सकता है

  4. रेडिस के साथ डिक्शनरी को कैसे स्टोर और रिकवर करें?

  5. स्प्रिंग-डेटा 2.0.x में RedisCacheManager कैसे बनाएं?