sql >> データベース >  >> NoSQL >> Redis

スプリングブートを使用して多くのタイムアウトが発生した場合にredisを無効にする

    Spring Data Redisを使用している場合は、カスタム例外ハンドラーを介してこれらの一時的な停止と例外を処理するためのSpringのサポートを利用できます。

    コード:

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

    タイムアウトをデフォルト(60000)より低く設定することをお勧めします:

    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. リアルタイムで追加されるRedisからオブジェクトをポップするにはどうすればよいですか?

    3. RuntimeWarning:スーパーユーザー権限でワーカーを実行しています:これは絶対にお勧めしません

    4. mongorestoreを使用してMongoDBデータベースを復元する