sql >> Databáze >  >> NoSQL >> Redis

Zakázat redis při mnoha vypršení časového limitu pomocí pružinového spouštění

Pokud používáte Spring Data Redis, můžete využít podporu Spring pro zpracování těchto dočasných výpadků a výjimek prostřednictvím vlastního obslužného programu výjimek.

Kód:

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

Doporučujeme nastavit časový limit nižší než výchozí (60000):

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

Poté vytvořte vlastní obslužnou rutinu chyb v kontextu Spring:

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 by měl selhání detekovat po 100 milisekundách a měl by se vrátit k načtení dat načtených přes @Cacheable anotované metody normálně, jako by došlo k chybě cache-miss. A kdykoli je mezipaměť obnovena, Spring začne znovu stahovat z mezipaměti.




  1. Redis :Jak nastavit, aby se jeden klíč rovnal hodnotě jiného klíče?

  2. MongoDB - objekty? Proč potřebuji _id v souhrnu

  3. Vlastní uživatelské připojovací řetězce pro instance MongoDB s ověřováním

  4. Použití COD a CML k vytváření aplikací, které předpovídají skladová data