春季启动时Redis缓存上下文监听器如何知道redis是否已升级?

时间:2017-01-04 15:14:03

标签: spring-boot redis-cache

我们有一个spring应用程序,其中redis缓存已与数据库MySQL一起实现。在这里,我们使用redis缓存来存储服务器验证的临时值,而不是每次都访问数据库,因此每次访问都会降低系统性能。

现在我在点击弹簧启动动作端点时解释我的问题, 如果突然我的redis缓存服务器停止,我们想知道如何获取我的redis缓存服务器已关闭的通知。所以我们需要解决方案/示例java应用程序来使用redis缓存监听器上下文或类似的东西来获取通知。

1 个答案:

答案 0 :(得分:0)

Redis无法正常工作。实际上,没有远程服务会通知您的应用程序它已关闭。通常,情况恰恰相反:如果使用或多或少复杂的客户端访问您正在使用的服务,则可以利用客户端的功能。

运行I / O或监视线程的异步客户端可以在这里提供帮助。更具体地说,它取决于您使用Spring Boot和Redis的客户端。 Jedis是一个普通的客户端,可以根据请求做出反应。 Lettuce允许您注册在特定连接事件上调用的RedisConnectionStateListener,例如已连接/已断开连接:

RedisClient redisClient = …;

redisClient.addListener(new RedisConnectionStateListener() {
    @Override
    public void onRedisConnected(RedisChannelHandler<?, ?> redisChannelHandler) {

    }

    @Override
    public void onRedisDisconnected(RedisChannelHandler<?, ?> redisChannelHandler) {

    }

    @Override
    public void onRedisExceptionCaught(RedisChannelHandler<?, ?> redisChannelHandler, Throwable throwable) {

    }
});

使用Spring Data Redis时,从RedisClient检索LettuceConnectionFactory可能有点棘手,因为它是私有字段。因此需要反思。