sql >> Database teknologi >  >> NoSQL >> Redis

Deaktiver redis ved mange timeouts ved brug af fjederstøvle

Hvis du bruger Spring Data Redis, kan du udnytte Springs support til at håndtere disse midlertidige udfald og undtagelser via en tilpasset undtagelseshåndtering.

Kode:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

Anbefaler at indstille timeout lavere end standarden (60000):

spring.cache.type=redis
spring.redis.timeout=100

Opret derefter en brugerdefineret fejlbehandler i Spring-konteksten:

import lombok.extern.slf4j.Slf4j;
import org.springframework.cache.Cache;
import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cache.interceptor.CacheErrorHandler;
import org.springframework.context.annotation.Configuration;

@Slf4j
@EnableCaching
@Configuration
public class CacheConfiguration extends CachingConfigurerSupport {

    @Override
    public CacheErrorHandler errorHandler() {
        return new CacheErrorHandler() {
            @Override
            public void handleCacheGetError(RuntimeException exception, Cache cache, Object key) {
                log.info("Failure getting from cache: " + cache.getName() + ", exception: " + exception.toString());
            }

            @Override
            public void handleCachePutError(RuntimeException exception, Cache cache, Object key, Object value) {
                log.info("Failure putting into cache: " + cache.getName() + ", exception: " + exception.toString());
            }

            @Override
            public void handleCacheEvictError(RuntimeException exception, Cache cache, Object key) {
                log.info("Failure evicting from cache: " + cache.getName() + ", exception: " + exception.toString());
            }

            @Override
            public void handleCacheClearError(RuntimeException exception, Cache cache) {
                log.info("Failure clearing cache: " + cache.getName() + ", exception: " + exception.toString());
            }
        };
    }

}

Spring skulle opdage fejlen efter 100 millisekunder og fallback for at hente de data, der er hentet via @Cacheable annoterede metoder normalt som om der var en cache-miss. Og hver gang cachen gendannes, begynder foråret at trække fra cachen igen.




  1. Effektiv måde at ændre sæt medlemsopdatering

  2. apollostack/graphql-server - hvordan man får de felter, der anmodes om i en forespørgsel fra resolver

  3. Ruby - Redis baseret mutex med udløbsimplementering

  4. MongoDB-adgangskode med @ i