【问题标题】:ioredis - Ignore request if redis is downioredis - 如果 redis 关闭,则忽略请求
【发布时间】:2022-03-29 05:45:18
【问题描述】:

我正在使用 ioredis。 为了防止可能导致我的应用程序崩溃的巨大缓冲区,我想在 redis 关闭时忽略请求,并捕获这些请求。 有什么方法可以实现吗?

【问题讨论】:

    标签: node.js redis ioredis


    【解决方案1】:

    您可以使用circuit breaker design pattern

    断路器是现代软件开发中使用的一种设计模式。它用于检测故障,并封装了防止故障不断重复发生、维护期间、临时外部系统故障或意外系统故障的逻辑。

    通常断路器可用于检查外部服务的可用性。外部服务可以是数据库服务器或应用程序使用的 Web 服务。

    Martin fowler 的 blog post 有一个很好的解释和关于如何做的基本实现。

    【讨论】:

      【解决方案2】:

      对于其他需要更多帮助的人。这会拦截对 ioredis 的推荐,如果它未处于就绪状态,则返回 false。

      // Proxify commands to redis client.
      // If redis is unavailable then return false.
      // This stops everything dying if redis is down.
      module.exports.redis = new Proxy(client, {
        get(target, property, receiver) {
          if (client.status !== 'ready') {
            return (() => false);
          }
          return Reflect.get(target, property, receiver);
        },
      });
      

      【讨论】:

        猜你喜欢
        • 2011-06-14
        • 2020-05-03
        • 1970-01-01
        • 2019-06-26
        • 2016-02-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-14
        相关资源
        最近更新 更多