Redis
 sql >> Teknologi Basis Data >  >> NoSQL >> Redis

Cara mengaktifkan cache terdistribusi/cluster saat menggunakan redis dengan cache data pegas

Mengaktifkan caching di aplikasi boot musim semi sangat sederhana. Anda hanya perlu mengikuti tiga langkah.

  • Tentukan konfigurasi cache
  • Tambahkan EnableCaching ke kelas konfigurasi apa pun
  • Menyediakan kacang CacheManager

Untuk Redis, kami memiliki RedisCacheManager yang dapat dikonfigurasi dan dibuat.

Konfigurasi Tembolok

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

Tetapkan nilainya melalui properti atau file yaml seperti

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

Setelah Anda membuat konfigurasi, Anda dapat membuat konfigurasi cache untuk RedisCacheManger oleh pembuatnya.

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

Jika Anda menggunakan cluster Redis daripada memperbarui properti cache sesuai itu. Dalam hal ini beberapa kacang akan menjadi yang utama jika Anda menginginkan kacang khusus cache daripada menjadikan metode ini pribadi.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cache aplikasi vs. hibernasi cache tingkat kedua, yang mana yang digunakan?

  2. Script mencoba membuat variabel global

  3. LogicException:Pastikan ekstensi PHP Redis diinstal dan diaktifkan

  4. Diurutkan set ukuran tetap di Redis?

  5. Bagaimana saya bisa menggunakan redis dengan Django?