Redis
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> Redis

Cách bật bộ đệm phân tán / cụm khi sử dụng redis với bộ đệm dữ liệu mùa xuân

Kích hoạt bộ nhớ đệm trong ứng dụng khởi động mùa xuân rất đơn giản. Bạn chỉ cần làm theo ba bước.

  • Xác định cấu hình bộ nhớ cache
  • Thêm EnableCaching vào bất kỳ lớp cấu hình nào
  • Cung cấp một bean CacheManager

Đối với Redis, chúng tôi có RedisCacheManager có thể được định cấu hình và tạo.

Cấu hình bộ nhớ đệm

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

Đặt giá trị của chúng thông qua thuộc tính hoặc tệp yaml như

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

Khi bạn đã tạo cấu hình, bạn có thể tạo cấu hình bộ đệm cho RedisCacheManger bằng trình tạo.

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

Nếu bạn đang sử dụng cụm Redis, hãy cập nhật các thuộc tính bộ đệm theo điều đó. Trong điều này, một số bean sẽ trở thành chính nếu bạn muốn bean cụ thể vào bộ nhớ cache hơn là đặt các phương thức này ở chế độ riêng tư.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. đếm số phiên trong kết nối-redis

  2. Yii2 + Redis làm Cơ sở dữ liệu

  3. Tại sao các khóa Redis không hết hạn?

  4. Làm thế nào để redis chìa khóa hết hạn?

  5. Làm cách nào để đặt thời gian chờ đọc trên máy khách node redis?