Node-redis: Respons server streaming

Dibuat pada 14 Des 2016  ·  6Komentar  ·  Sumber: NodeRedis/node-redis

Hai, apakah mungkin dengan node_redis untuk mengalirkan respons server dengan perintah seperti HMGET atau KEYS ?

Terima kasih.

Feature Request

Semua 6 komentar

:+1: akan sangat bagus jika kita memiliki implementasi untuk itu

@aletorrado Saya sudah memiliki situasi yang sama dan saya ingin streaming dari HKEYS cmd
jadi saya membuat aliran yang dapat dibaca menggunakan cmd HSCAN, dengan implementasi ini:

const redis = require('redis');
const connectionParams = {};

class HKeysReadable extends require('stream').Readable {
  constructor(key, chunkSize, opt) {
    opt = opt || {};
    opt.objectMode = true;
    super(opt);
    this._cursor = 0;
    this.key = key;
    this.chunkSize = chunkSize;
    this.client = redis.createClient(connectionParams);
  }

  _read() {
    if (this._cursor === '0') {
      this.push(null);
      return this.client.quit();
    }

    this.client.hscan(this.key, this._cursor, 'COUNT', this.chunkSize, (err, res) => {
        if (err) {
          this.push(null);
          this.client.quit();
          return process.nextTick(() => this.emit('error', err));
        }

        this._cursor = res[0];

        /**
         *
         SCAN returns value as an array of two values, the first value is the new cursor to use in the next call,
         the second value is an array of elements like: [key1, val1, key2, val2, key3, val3, .....]
         In this stream, we need the keys only so we reduce that array to get only the odd values which contain the keys

         */
        let keys = res[1].reduce((accumulator, val, index)=> {
          if (!(index % 2)) {
            accumulator.push(val);
          }

          return accumulator;
        }, []);

        if (keys.length > 0) {
          this.push(keys);
        }
      }
    );
  }
};

@BridgeAR bagaimana menurutmu? apakah ada kemungkinan untuk mengadaptasi implementasi serupa di perpustakaan Redis juga?

@hossam-fares yang bagus. Pada dasarnya ini dapat mengabstraksi kursor dari klien node_redis , untuk kumpulan perintah redis yang masuk daftar putih (mis. SCAN, SSCAN, HSCAN, ZSCAN).

@hossam-fares Saya pasti ingin menerapkan sesuatu yang serupa :+1:

@BridgeAR keren, saya akan mengerjakan PR untuk itu

Apakah ini sudah dilaksanakan?

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

strumwolf picture strumwolf  ·  4Komentar

gpascale picture gpascale  ·  4Komentar

Atala picture Atala  ·  3Komentar

juriansluiman picture juriansluiman  ·  3Komentar

adamgajzlerowicz picture adamgajzlerowicz  ·  4Komentar