Redis
 sql >> база данни >  >> NoSQL >> Redis

Как да активирате разпределен/клъстерен кеш, когато използвате redis с пружинен кеш за данни

Активирането на кеширането в приложението за пролетно зареждане е много просто. Ще трябва да изпълните само три стъпки.

  • Определете конфигурация на кеша
  • Добавете EnableCaching към всеки конфигурационен клас
  • Предоставете компонент на CacheManager

За 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();
  }
}

Ако използвате Redis клъстер, актуализирайте свойствата на кеша според това. В това някои бийнове ще станат първични, ако искате специфичен за кеша бийн, отколкото да направите тези методи частни.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Не мога да се свържа със сървъра Redis чрез ASP.NET доставчик на състояние на сесията

  2. Искате да внедрите уеб сокети в Laravel

  3. Как да получите всички ключове в Redis

  4. Настройка на ElastiCache Redis с Elastic BeanStalk + Django

  5. Може ли redis да деактивира отговорите за конвейерни команди?