【问题标题】:Redis cache context listener in spring boot how to know is redis cache up or not?Spring Boot中的Redis缓存上下文监听器如何知道redis缓存是否启动?
【发布时间】:2018-04-09 10:06:49
【问题描述】:

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

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

【问题讨论】:

    标签: spring-boot redis-cache


    【解决方案1】:

    Redis 不是这样工作的。事实上,没有远程服务会通知您的应用程序它已关闭。通常情况正好相反:如果您使用的服务由或多或少复杂的客户端访问,您可能会利用客户端的功能。

    运行 I/O 或监控线程的异步客户端可以提供帮助。更具体地说,它取决于您使用 Spring Boot 和 Redis 的客户端。 Jedis 是一个基于请求做出反应的普通客户端。 Lettuce 允许您注册一个RedisConnectionStateListener,该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 时,从 LettuceConnectionFactory 检索 RedisClient 可能有点棘手,因为它是一个私有字段。因此它需要反思。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-23
      • 2020-04-25
      • 1970-01-01
      • 2017-11-22
      • 2022-01-17
      • 1970-01-01
      • 2020-02-16
      相关资源
      最近更新 更多