Node.js 使用节点js从redis删除密钥
我正试图用下面的代码删除redis中的密钥,但出于某种原因,这并不是删除redis中的密钥,而是进行控制台操作。有人能帮我一下吗?我这里缺什么Node.js 使用节点js从redis删除密钥,node.js,redis,Node.js,Redis,我正试图用下面的代码删除redis中的密钥,但出于某种原因,这并不是删除redis中的密钥,而是进行控制台操作。有人能帮我一下吗?我这里缺什么 import { RedisClient } from 'redis'; let rediClient: RedisClient = redis.createClient(redisPort, redisHostName, { auth_pass: authPass, no_ready_check: true, prefix:
import { RedisClient } from 'redis';
let rediClient: RedisClient = redis.createClient(redisPort, redisHostName, {
auth_pass: authPass,
no_ready_check: true,
prefix: KEY_PREFIX,
retry_strategy: redisRetryStrategy,
tls: { servername: hostName },
});
let cursor = '0';
const scan = (pattern: string, callback: () => void) => {
redisClient.scan(
cursor,
'MATCH',
pattern,
'COUNT',
'1000',
async (err, reply) => {
console.log(err);
if (err) {
throw err;
}
cursor = reply[0];
const keys = reply[1];
console.log(keys);
console.log(keys.length);
console.log(keys[1]);
if (keys) {
await redisClient.del(keys[1], (deleteErr, deleteSuccess) => {
console.log(`err ==> ${deleteErr}`);
console.log(deleteSuccess);
});
console.log(` key 0 is : ${keys[0]}`);
redisClient.del(keys[0]);
// keys.forEach((key) => {
// redisClient.del(key, (deleteErr, deleteSuccess) => {
// console.log(`err ==> ${deleteErr}`);
// console.log(deleteSuccess);
// });
// });
}
if (cursor !== '0') {
console.log(cursor);
return scan(pattern, callback);
}
return callback();
}
);
};
export const deleteResetPin = (pattern: string) => {
scan(pattern, () => {
console.log('Scan Complete');
});
};
要求:我想使用节点js删除与模式匹配的所有键,并使用注释部分(从键开始。forEach
)运行扫描功能将删除与模式匹配的所有键,但这里有几个需要修复/改进的地方:
在删除键之前,将调用回调(因此也会调用日志)
如果扫描回复有错误,则错误将被取消,进程将退出
你把回电和承诺混为一谈
您可以一次删除一组密钥
以下是该函数的“承诺”版本:
const{promisify}=require('util'),
client=require('redis')。createClient(),
scanAsync=promisify(client.scan).bind(client),
delAsync=promisify(client.del).bind(client);
异步函数scanAndDelete(模式:string):Promise{
设游标='0';
做{
const reply=等待扫描异步(光标“匹配”、模式“计数”、“1000”);
游标=回复[0];
等待delAsync(回复[1]);
}而(光标!='0')
}