Redis
 sql >> Baza danych >  >> NoSQL >> Redis

Jak włączyć rozproszoną/klastrową pamięć podręczną podczas korzystania z redis z wiosenną pamięcią podręczną danych?

Włączanie buforowania w aplikacji Spring Boot jest bardzo proste. Wystarczy wykonać trzy kroki.

  • Zdefiniuj konfigurację pamięci podręcznej
  • Dodaj EnableCaching do dowolnej klasy konfiguracji
  • Dostarcz ziarna CacheManager

W przypadku Redis mamy RedisCacheManager, który można konfigurować i tworzyć.

Konfiguracja pamięci podręcznej

@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;
}

Ustaw ich wartości za pomocą właściwości lub pliku yaml, takiego jak

cache.redisHost=localhost
cache.redisPort=6379
cache.timeoutSeconds=1000
cache.cacheTtls.cach1=100
cache.cacheTtls.cach2=200

Po utworzeniu konfiguracji możesz utworzyć konfigurację pamięci podręcznej dla RedisCacheManger przez konstruktora.

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

Jeśli używasz klastra Redis, zaktualizuj właściwości pamięci podręcznej zgodnie z tym. W tym przypadku niektóre ziarna staną się podstawowe, jeśli chcesz, aby fasola była specyficzna dla pamięci podręcznej, niż uczynić te metody prywatnymi.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Seler próbuje połączyć się z niewłaściwym brokerem

  2. Jak wygasnąć klucz podrzędny HSET w redis?

  3. Próbuję uruchomić redis i resque scheduler w ramach zadania rake

  4. Nie można połączyć się z Redis o 127.0.0.1:6379:Połączenie odrzucone

  5. Uzyskaj indeks elementu według wartości na liście redis