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

How to remove old data in redis when updating data?

我在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 秒后被删除(或更准确地说,标记为删除),但您需要注意两件事:

  1. 如果您在已有 TTL 的键上调用 EXPIRE 命令,它将覆盖 之前的 TTL。
  2. 一旦密钥的值被覆盖(使用SETDEL等),就会清除过期超时。

顺便说一句,如果您更新的是完全相同的密钥,数据无论如何都会被覆盖。例如:

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