更新数据时如何清除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 秒后被删除(或更准确地说,标记为删除),但您需要注意两件事:
- 如果您在已有 TTL 的键上调用
EXPIRE
命令,它将覆盖 之前的 TTL。
- 一旦密钥的值被覆盖(使用
SET
、DEL
等),就会清除过期超时。
顺便说一句,如果您更新的是完全相同的密钥,数据无论如何都会被覆盖。例如:
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
我在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
等),就会清除过期超时。
顺便说一句,如果您更新的是完全相同的密钥,数据无论如何都会被覆盖。例如:
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