我将springboot与redis一起使用。redis作为docker容器运行
spring.cache.type=redis
spring.redis.host=localhost
spring.redis.port=6379
redis是一个内存db,如果根据key在redis中找到数据,则从redis中取出来,否则进入实际的db调用。当redis运行时,代码工作正常。但有时由于任何原因,如果redis倒下了,我会得到一个例外 RedisConnectionException: Unable to connect to localhost:6379
我想让它成为可选的。如果出现故障,代码应该按原样工作,方法是调用实际的db数据(sql服务存储库)。
有没有办法让redis调用成为可选的。
if running, work with Redis,
if down, can to actual DB without exception.
我的代码
@Cacheable(cacheNames = CACHE_USER_DETAILS)
public User getUserDetails(String username) {
//call data from sql serever via repositories.
}
2条答案
按热度按时间sigwle7e1#
我通过创建自己的错误处理程序修复了这个问题,并对spring缓存错误处理程序进行了过度评估
rkue9o1l2#
因为您正在使用@cachaeble spring抽象进行缓存,所以请编写一个实现cacheerrorhandler接口的类。您可以重写它的方法并执行逻辑操作(例如记录错误)。
如果redis关闭,getuserdetails(stringusername)将自动完成。
看看这个问题
希望这有帮助。