Redis
 sql >> डेटाबेस >  >> NoSQL >> Redis

स्प्रिंग बूट का उपयोग करते हुए कई टाइमआउट होने पर रेडिस को अक्षम करें

यदि आप स्प्रिंग डेटा रेडिस का उपयोग कर रहे हैं, तो आप कस्टम अपवाद हैंडलर के माध्यम से इन अस्थायी आउटेज और अपवादों को संभालने के लिए स्प्रिंग के समर्थन का लाभ उठा सकते हैं।

कोड:

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

टाइमआउट को डिफ़ॉल्ट (60000) से कम सेट करने की अनुशंसा करें:

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

फिर स्प्रिंग संदर्भ में एक कस्टम एरर हैंडलर बनाएं:

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

}

स्प्रिंग को 100 मिलीसेकंड के बाद विफलता का पता लगाना चाहिए और @Cacheable के माध्यम से पुनर्प्राप्त किए गए डेटा को पुनर्प्राप्त करने के लिए फ़ॉलबैक करना चाहिए सामान्य रूप से एनोटेट किए गए तरीके जैसे कि कैश-मिस थे। और जब भी कैश को पुनर्स्थापित किया जाता है तो स्प्रिंग फिर से कैश से खींचना शुरू कर देगा।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. सरल .NET वितरित कैशिंग समाधान के लिए सुझाव

  2. कई django साइटों के साथ अजवाइन

  3. Redis सॉर्ट किए गए सेट में आंशिक कुंजी नाम का उपयोग करके मान ढूँढना

  4. Microsoft.Extensions.Caching.Redis db0 से भिन्न डेटाबेस का चयन करें

  5. मैं रेडिस में सब कुछ कैसे हटा सकता हूं?