Spring Boot配置Redis缓存无法连接时请求数据库

  业务场景: 在Spring Boot项目中使用了@Cacheable注解实现往Redis中存入数据库查询数据和读取缓存数据,如果由于一些原因Redis无法连接的话,那么@Cacheable标注的方法则会报错且无法返回数据。需要在Redis无法连接的情况下让方法直接请求数据库。

  解决方法: 添加Redis配置类继承CachingConfigurerSupport类,重写errorHandler方法即可。

代码如下:

@Slf4j
@Configuration
@EnableCaching
public class RedisConfig extends CachingConfigurerSupport {
	
	/**
	 * 配置当redis连接不上时被缓存注解标注的方法绕过Redis
	 */
	@Bean
	@Override
	public CacheErrorHandler errorHandler() {
		CacheErrorHandler cacheErrorHandler = new CacheErrorHandler() {

			@Override
			public void handleCachePutError(RuntimeException exception, Cache cache, Object key, Object value) {
				log.error("redis异常:key=[{}]", key, exception);
			}

			@Override
			public void handleCacheGetError(RuntimeException exception, Cache cache, Object key) {
				log.error("redis异常:key=[{}]", key, exception);
			}

			@Override
			public void handleCacheEvictError(RuntimeException exception, Cache cache, Object key) {
				log.error("redis异常:key=[{}]", key, exception);
			}

			@Override
			public void handleCacheClearError(RuntimeException exception, Cache cache) {
				log.error("redis异常:", exception);
			}
		};
		
		return cacheErrorHandler;
	}
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值