рдореИрдВ рдПрдХ рдмрдбрд╝реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдХреБрдЫ рдЬрдЧрд╣реЛрдВ рдкрд░, рдореБрдЭреЗ рдПрдХ рдкреИрдЯрд░реНрди рджреНрд╡рд╛рд░рд╛ рдЪрд╛рдмрд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛рдирд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ filterProducts
рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╕рднреА рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ
рдореИрдВрдиреЗ рдПрдХ Google рдЦреЛрдЬ рдХреА рдФрд░ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдкрд╛рдпрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдЖрд▓реЗрдЦ рдореЗрдВ рд╡рд┐рдзрд┐
рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдПрдХ рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдХреБрд╢рд▓ рдХреНрдпрд╛ рд╣реИ, рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдореЗрд░реА рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
рдЬрд┐рд╕ рд╡рд┐рдзрд┐ рд╕реЗ рдЖрдкрдиреЗ рд▓рд┐рдВрдХ рдХрд┐рдпрд╛ рд╣реИ рд╡рд╣ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдиреЗ рдХрд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рднрдпрд╛рдирдХ рддрд░реАрдХрд╛ рд╣реИред KEYS
рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ рдФрд░ рдбреАрдИрдПрд▓ рднреА рдХрд╛рдлреА рдЕрдХреНрд╖рдо рд╣реИред рдореИрдВ SCAN
рдФрд░ UNLINK
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрд╛рдВрдЪ рдХрд░реВрдВрдЧрд╛ред рдЗрд╕ рддрд░рд╣ рдЖрдк Redis рдХреЛ рдмрд╛рдВрдзреЗ рдмрд┐рдирд╛ рдПрдХ рдмрд╛рд░ рдореЗрдВ рдореБрдЯреНрдареА рднрд░ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдХрд╣рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдХрд┐, рдЙрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдк рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИред рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВред
@ рдореЛрд╣рдореНрдордж рдЕрд▓-рдорд╣рджрд╛рд╡реА рдореЗрд░реЗ рдкрд╛рд╕ рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдПрдХ рд╕рдорд╛рди рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ рдФрд░ ioredis рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд scanStream
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ scan
рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ: https://github.com/luin/ioredis#streamify -scanning
рдпрджрд┐ рдЖрдк SCAN
рдФрд░ UNLINK
рдЬреИрд╕реЗ @stockholmux рдХрд╛ рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ Redis рдХреЛ рдмреНрд▓реЙрдХ рдХрд┐рдП рдмрд┐рдирд╛ рдХрд┐рд╕реА рднреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдирд┐рдХрд╛рд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
@dirkbonhomme рдЖрдкрдХреА рдорджрдж рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВред
рдореИрдВрдиреЗ рдЖрдкрдХреА рд╕рд▓рд╛рд╣ рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ рдФрд░ ioredis рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛, рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдкреНрд░рднрд╛рд╡реА рддрд░реАрдХрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ:
//key example "prefix*"
function getKeysByPattern(key) {
return new Promise((resolve, reject) => {
var stream = redis.scanStream({
// only returns keys following the pattern of "key"
match: key,
// returns approximately 100 elements per call
count: 100
});
var keys = [];
stream.on('data', function (resultKeys) {
// `resultKeys` is an array of strings representing key names
for (var i = 0; i < resultKeys.length; i++) {
keys.push(resultKeys[i]);
}
});
stream.on('end', function () {
resolve(keys)
});
})
}
//key example "prefix*"
function deleteKeysByPattern(key) {
var stream = redis.scanStream({
// only returns keys following the pattern of "key"
match: key,
// returns approximately 100 elements per call
count: 100
});
var keys = [];
stream.on('data', function (resultKeys) {
// `resultKeys` is an array of strings representing key names
for (var i = 0; i < resultKeys.length; i++) {
keys.push(resultKeys[i]);
}
});
stream.on('end', function () {
redis.unlink(keys)
});
}
@ рдореЛрд╣рдореНрдордж рдЕрд▓-рдорд╣рджрд╛рд╡реА рдореБрдЭреЗ рдЕрдЪреНрдЫреЗ рд▓рдЧрддреЗ рд╣реИрдВред рдХреЗрд╡рд▓ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рд╕рднреА рдорд┐рд▓рд╛рди рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рд╕реНрдореГрддрд┐ рдореЗрдВ рд▓реЛрдб рдХрд░ рджреЗрдВрдЧреЗред рдпрджрд┐ рдпрд╣ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рддреЛ рдЖрдк рдЙрдирдХреЗ рдЖрддреЗ рд╣реА рдЙрдиреНрд╣реЗрдВ рдмреИрдЪреЛрдВ рдореЗрдВ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ:
stream.on('data', function (resultKeys) {
if (resultKeys.length) {
redis.unlink(resultKeys);
}
});
@dirkbonhomme рдФрд░ @MohammedAl-Mahdawi рдЗрд╕ рдкрджреНрдзрддрд┐ рдореЗрдВ рдкрд░рдорд╛рдгреБрддрд╛ рдХреЗ рдореБрджреНрджреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдХрд╛рдЯ рд╕рдХрддреЗ рд╣реИрдВред
@stockholmux рдЖрдкрдХреА рдорджрдж рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рддреЛ рдХреГрдкрдпрд╛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╣реА рд╕рдорд╛рдзрд╛рди рдХреНрдпрд╛ рд╣реИ?
рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рднреА рдЬреЛ рдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд╣реИ, рдЬрд┐рд╕ рддрдХ рд╣рдо рдЕрдм рддрдХ рдкрд╣реБрдВрдЪреЗ рд╣реИрдВ рдФрд░ рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╕рдмрд╕реЗ рдХреБрд╢рд▓ рддрд░реАрдХрд╛ рд╣реИ:
//key example "prefix*"
function getKeysByPattern(key) {
return new Promise((resolve, reject) => {
var stream = redis.scanStream({
// only returns keys following the pattern of "key"
match: key,
// returns approximately 100 elements per call
count: 100
});
var keys = [];
stream.on('data', function (resultKeys) {
// `resultKeys` is an array of strings representing key names
for (var i = 0; i < resultKeys.length; i++) {
keys.push(resultKeys[i]);
}
});
stream.on('end', function () {
resolve(keys)
});
})
}
//key example "prefix*"
function deleteKeysByPattern(key) {
var stream = redis.scanStream({
// only returns keys following the pattern of "key"
match: key,
// returns approximately 100 elements per call
count: 100
});
var keys = [];
stream.on('data', function (resultKeys) {
// `resultKeys` is an array of strings representing key names
for (var i = 0; i < resultKeys.length; i++) {
keys.push(resultKeys[i]);
}
});
stream.on('end', function () {
redis.unlink(keys)
});
}
//key example "prefix*"
function batchDeletionKeysByPattern(key) {
var stream = redis.scanStream({
// only returns keys following the pattern of "key"
match: key,
// returns approximately 100 elements per call
count: 100
});
stream.on('data', function (resultKeys) {
if (resultKeys.length) {
redis.unlink(resultKeys);
}
});
}
рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб ioredis рдХреЗ рд▓рд┐рдП рд╣реИ ред
рдХреГрдкрдпрд╛ рдпрджрд┐ рдЖрдк рдРрд╕реЗ рд╡реНрдпрдХреНрддрд┐ рд╣реИрдВ рдЬреЛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рдЬрд╛рдирддреЗ рд╣реИрдВ рддреЛ рдХреГрдкрдпрд╛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдВрдХреЛрдЪ рди рдХрд░реЗрдВред
@ рдореЛрд╣рдореНрдордж рдЕрд▓-рдорд╣рджрд╛рд╡реА,
рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рдЙрд╕реА рдкрд░ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ
рдХреЛрдбрдмреЗрд╕:
let redisDel = () => {
var key="employees*"
return new Promise((resolve, reject) => {
var stream = redis.scanStream({
// only returns keys following the pattern of "key"
match: key,
// returns approximately 100 elements per call
count: 100
});
stream.on('data', function (resultKeys) {
if (resultKeys.length) {
console.log(resultKeys)
redis.unlink(resultKeys);
}
});
stream.on('end', function (resultKeys) {
resolve()
})
})
}
рдХреЛрдИ рдпрд╣рд╛рдБ рд╕рд╣реА рд╕рдорд╛рдзрд╛рди рджреЗрддрд╛ рд╣реИ?
@ siddhkadam1881 рдЕрдирд▓рд┐рдВрдХ рдХрдорд╛рдВрдб рдХреЗрд╡рд▓ https://redis.io/commands/unlink рдХреЗ рдмрд╛рдж рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИ
рдЖрдк рд╢рд╛рдпрдж рдПрдХ рдкреБрд░рд╛рдирд╛ рд╕рдВрд╕реНрдХрд░рдг рдЪрд▓рд╛ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп del
рдЖрдЬрд╝рдорд╛рдПрдВред
рдореИрдВ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╕реНрдХреИрдирд┐рдВрдЧ рдХреИрд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @MohammedAl-Mahdawi рджреНрд╡рд╛рд░рд╛ рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдпрджрд┐ рд╡рд┐рд▓реЛрдкрди рдмреИрдЪреЛрдВ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдХреНрдпрд╛ рдЗрд╕ рдмрд╛рдд рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЙрд╕ рд╕рдордп рдореЗрдВ рдЬреЛрдбрд╝реА рдЧрдИ рдирдИ рдХреБрдВрдЬрд┐рдпрд╛рдБ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рд╣рдЯрд╛рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╕реНрдХреИрди рдФрд░ рд╣рдЯрд╛ рджреА рдЬрд╛рдПрдВрдЧреАред рд▓реБрдЖ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ?
рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╛рдзрд╛рди рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ 1 рдЙрджрд╛рд╣рд░рдг ElastiCache рд╕рд░реНрд╡рд░ рдкрд░ рдХреНрдпреЛрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ? рдореИрдВ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЪрд╛рдмрд┐рдпрд╛рдБ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореИрдВ рд╕реНрдЯреНрд░реАрдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рдХрднреА рднреА ElastiCache рдкрд░ рдХреЛрдИ рдХреБрдВрдЬреА рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рднреА рдЬреЛ рдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд╣реИ, рдЬрд┐рд╕ рддрдХ рд╣рдо рдЕрдм рддрдХ рдкрд╣реБрдВрдЪреЗ рд╣реИрдВ рдФрд░ рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╕рдмрд╕реЗ рдХреБрд╢рд▓ рддрд░реАрдХрд╛ рд╣реИ:
рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб ioredis рдХреЗ рд▓рд┐рдП рд╣реИ ред
рдХреГрдкрдпрд╛ рдпрджрд┐ рдЖрдк рдРрд╕реЗ рд╡реНрдпрдХреНрддрд┐ рд╣реИрдВ рдЬреЛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рдЬрд╛рдирддреЗ рд╣реИрдВ рддреЛ рдХреГрдкрдпрд╛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдВрдХреЛрдЪ рди рдХрд░реЗрдВред