我们可以为 Azure Redis 缓存中的所有密钥设置过期时间吗?

Can we set expiry for all keys in Azure Redis Cache?

要在创建密钥时为其设置到期时间,我们可以使用 StringSetAsync 并传递到期时间戳值。但是,如果我们想一次设置多个键值对,这是不可能的 -

Task<bool> StringSetAsync(KeyValuePair<RedisKey, RedisValue>[] values, When when = When.Always, CommandFlags flags = CommandFlags.None);

Task<bool> StringSetAsync(RedisKey key, RedisValue value, TimeSpan? expiry = default(TimeSpan?), When when = When.Always, CommandFlags flags = CommandFlags.None);

是否可以在 azure 的某处为缓存级别的所有密钥设置过期时间? 我在任何文档中都找不到答案。 我想一次设置所有kvps以减少对azure redis缓存的调用次数。我也找不到任何上限。一次调用最多可以获取和设置多少个键?

根据Redis Commands list or Related commands (the right-side of page) list about EXPIRE,没有一个命令可以同时使所有密钥失效。

所以唯一的方法是您需要循环到 运行 命令 EXPIRE <key> <seconds> 以获取来自命令 KEYS * 的列表。同时考虑减少请求次数,可以参考题目Scripting of StackExchange.Redis offical documents to generate a Lua script for all keys expiry and request once to expire all via command EVAL.