更新数据时如何删除redis中的旧数据



我在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.expire59秒后,密钥似乎会被删除(或者更准确地说,标记为删除(,但有两件事需要注意:

  1. 如果在已经有TTL的密钥上调用EXPIRE命令,它将覆盖上一个TTL
  2. 一旦密钥的值被覆盖(使用SETDEL等(,过期超时将被清除

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

最新更新