рдирдорд╕реНрддреЗ, node_redis
рд╕рд╛рде HMGET
рдпрд╛ KEYS
рдЬреИрд╕реЗ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реНрдЯреНрд░реАрдо рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ?
рдзрдиреНрдпрд╡рд╛рджред
:+1: рдЕрдЧрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ рддреЛ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛
@aletorrado рдореЗрд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдРрд╕реА рд╣реА рд╕реНрдерд┐рддрд┐ рдереА рдФрд░ рдореИрдВ HKEYS cmd . рд╕реЗ рд╕реНрдЯреНрд░реАрдо рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛
рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде HSCAN cmd рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдкрдардиреАрдп рдзрд╛рд░рд╛ рдмрдирд╛рдИ:
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 рдЖрдкрдХреЛ рдХреНрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ? рдХреНрдпрд╛ рд░реЗрдбрд┐рд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рднреА рдЗрд╕реА рддрд░рд╣ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ?
рдмрдврд╝рд┐рдпрд╛ @ рд╣реЛрд╕рдо-рдХрд┐рд░рд╛рдпрд╛ред рдореВрд▓ рд░реВрдк рд╕реЗ рдпрд╣ рд░реЗрдбрд┐рд╕ рдХрдорд╛рдВрдб (рдпрд╛рдиреА рд╕реНрдХреИрди, рдПрд╕рдПрд╕рд╕реАрдПрдПрди, рдПрдЪрдПрд╕рд╕реАрдПрдПрди, рдЬреЗрдбрдПрд╕рд╕реАрдПрдПрди) рдХреЗ рд╢реНрд╡реЗрддрд╕реВрдЪреАрдмрджреНрдз рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП node_redis
рдХреНрд▓рд╛рдЗрдВрдЯреНрд╕ рд╕реЗ рдХрд░реНрд╕рд░ рдХреЛ рдЕрдореВрд░реНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред
@ рд╣реЛрд╕рдо-рдХрд┐рд░рд╛рдпрд╛ рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХреБрдЫ рдЗрд╕реА рддрд░рд╣ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ: +1:
@BridgeAR рдХреВрд▓, рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдкреАрдЖрд░ рдкрд░ рдХрд╛рдо рдХрд░реВрдВрдЧрд╛
рдХреНрдпрд╛ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?