Node.js Can';t获取密钥';订阅到期后的s值
我有一个浅密匙,它应该过期,在听了它的过期之后,我取下这个密匙,生成一个保存真实值的密匙,并尝试获取它的值 代码: 运行listener.get后出现以下错误: ReplyError:ERR only(p)SUBSCRIBE/(p)UNSUBSCRIBE/PING/QUIT在此上下文中允许 我需要实际键的值。如中所述: 一旦客户端进入订阅状态,它就不应该 发出除附加SUBSCRIBE、PSUSCRIBE、, 取消订阅、取消订阅、PING和退出命令 通常的模式是有两个客户端连接(调用Node.js Can';t获取密钥';订阅到期后的s值,node.js,redis,node-redis,Node.js,Redis,Node Redis,我有一个浅密匙,它应该过期,在听了它的过期之后,我取下这个密匙,生成一个保存真实值的密匙,并尝试获取它的值 代码: 运行listener.get后出现以下错误: ReplyError:ERR only(p)SUBSCRIBE/(p)UNSUBSCRIBE/PING/QUIT在此上下文中允许 我需要实际键的值。如中所述: 一旦客户端进入订阅状态,它就不应该 发出除附加SUBSCRIBE、PSUSCRIBE、, 取消订阅、取消订阅、PING和退出命令 通常的模式是有两个客户端连接(调用redis.c
redis.createClient()
两次)。以下是一个例子:
基本上,一个连接用于过期事件,另一个连接用于所需的其他逻辑(获取键值等)
//.: Set the config for "notify-keyspace-events" channel used for expired type events
listener.send_command('config', ['set','notify-keyspace-events','Ex']);
// __keyevent@0__:expired is the channel name to which we need to subscribe, 0 is the default DB
listener.subscribe('__keyevent@0__:expired');
listener.on('message', (chan, msg) => {
listener.get(`${msg}-details`, redis.print);
});