我正在开发一个使用Redis作为缓存的应用程序。如果Redis发生故障,我希望我的应用程序尽可能继续运行。为此,我正在尝试让Redisson在Redis服务器关闭时快速使请求超时(〜100 ms)。但是,无论我设置的配置值如何,Redisson操作都会在3秒后超时,这太慢了。
要测试超时时间,请执行以下操作:
我的代码调用RedissonClient.getBucket[String](key).get()
,并调用该次。计时总是在3秒钟内数毫秒,这意味着3秒钟的超时时间。这似乎是默认设置,表明我的配置设置无效。
我将Redisson配置为:
ReplicatedServersConfig
.setConnectTimeout(50)
.setRetryAttempts(2)
.setTimeout(50)
根据他们的文档,我还尝试了与我的问题无关的setPingTimeout
,setIdleConnectionTimeout
和setFailedSlaveReconnectionInterval
。
如果所有其他方法均失败,则可以在适当的超时时间下将缓存获取代码包装在Future
中。这种方法行得通,但是我更希望避免这种黑客行为。