Redis
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> Redis

Redis (ioredis) - Không thể bắt lỗi kết nối để xử lý chúng một cách dễ dàng

Lỗi kết nối được báo cáo là một error sự kiện trên máy khách Redis đối tượng.

Theo phần "Tự động kết nối lại" của tài liệu, ioredis sẽ tự động cố gắng kết nối lại khi kết nối với Redis bị mất (hoặc, có lẽ là không thể thiết lập ngay từ đầu). Chỉ sau maxRetriesPerRequest những lần thử thì các lệnh đang chờ xử lý sẽ "bị lỗi", tức là truy cập catch tại đây:

  try {
    cachedItem = await redisClient.get(queryString); // This emit an error on the redis client, because it fails to connect (that's intended, to test the behaviour)
  } catch (e) {
    logger.error(e); // It never goes there, as the error isn't "thrown", but rather "emitted" and handled by redis its own way
    epsagon.setError(e);
  }

Vì bạn dừng chương trình của mình do lỗi đầu tiên:

  client.on('error', function (e) {
    // ...
    if (e.message === 'ERR invalid password') {
      logger.error(`Fatal error occurred "${e.message}". Stopping server.`);
      throw e; // Fatal error, don't attempt to fix

... các lần thử lại và lần "xử lý lỗi" tiếp theo sẽ không bao giờ có cơ hội để chạy.

Bỏ qua các lỗi trong client.on('error' và bạn sẽ nhận được lỗi trả về từ await redisClient.get() .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tôi có cần thoát phiên bản ứng dụng khách redis nút của mình bằng cách sử dụng .quit () không?

  2. Memcache vs Bộ nhớ Java

  3. Không thể tìm thấy mô-đun 'socket.io/node_modules/redis'

  4. Làm cách nào để sử dụng redis với Django?

  5. Tắt redis khi nhiều lần hết thời gian sử dụng khởi động lò xo