Redis
 sql >> база данни >  >> NoSQL >> Redis

Деактивирайте redis, когато има много изчаквания с помощта на пружинно зареждане

Ако използвате Spring Data Redis, можете да използвате поддръжката на Spring за обработка на тези временни прекъсвания и изключения чрез персонализиран манипулатор на изключения.

Код:

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

Препоръчително е да зададете времето за изчакване по-ниско от стандартното (60 000):

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

След това създайте персонализиран манипулатор на грешки в контекста на 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 трябва да открие неизправността след 100 милисекунди и резервно време, за да извлече данните, извлечени чрез @Cacheable анотирани методи обикновено, сякаш има пропуск в кеша. И всеки път, когато кешът бъде възстановен, Spring ще започне да се изтегля от кеша отново.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Програмата scrapy-redis не се затваря автоматично

  2. Spring data redis отменя сериализатора по подразбиране

  3. съхраняване на данни в redis чрез cron задание

  4. разгръщането на redis към heroku не може да се свърже

  5. Споделяне на сесии с redis и паспорт на поддомейн?