我在redis中设置数据,但我每分钟更新一次数据,我需要redis用更新后的新数据替换旧数据。我很困惑如何才能做到这一点。我尝试使用client.expire('key',60(,但似乎不起作用。下面是我的代码。如有任何帮助,我们将不胜感激。提前谢谢。
var redis = require("redis"),
client = redis.createClient();
const { promisify } = require("util");
const setAsync = promisify(client.set).bind(client);
async function run(){
//do something
const success = await setAsync('mykey', list);
console.log({success});
client.expire('mykey', 59);
}
在调用client.expire
59秒后,密钥似乎会被删除(或者更准确地说,标记为删除(,但有两件事需要注意:
- 如果在已经有TTL的密钥上调用
EXPIRE
命令,它将覆盖上一个TTL - 一旦密钥的值被覆盖(使用
SET
、DEL
等(,过期超时将被清除
BTW,如果您正在更新完全相同的密钥,数据无论如何都会被覆盖。。例如:
await setAsync('key', 'value1'); // set 'key' to 'value1'
await setAsync('key', 'value2'); // override 'key' to 'value2'
await getAsync('key'); // 'value2'
此外,您可以使用EX
选项,而不是运行两个命令,一个用于设置值,另一个用于设定TTL:
setAsync('key', 'value', 'EX', 60); // set `key` to `value` with TTL of 60 seconds