【问题标题】:Can we set expiry for all keys in Azure Redis Cache?我们可以为 Azure Redis 缓存中的所有键设置过期时间吗?
【发布时间】:2019-05-13 18:06:42
【问题描述】:

要在创建键时为其设置到期时间,我们可以使用 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 缓存的调用次数。我也找不到任何上限。一次调用最多可以获取和设置多少个键?

【问题讨论】:

    标签: c# redis azure-redis-cache


    【解决方案1】:

    根据Redis Commands列表或Related commands(页面右侧)列表关于EXPIRE,没有一个命令可以同时使所有键失效。

    因此,唯一的方法是您需要循环运行命令EXPIRE &lt;key&gt; &lt;seconds&gt; 以获取来自命令KEYS * 的列表。同时,考虑到减少请求次数,可以尝试参考StackExchange.Redis官方文档的主题Scripting,生成所有key过期的Lua脚本,通过命令EVAL请求一次全部过期。

    【讨论】:

    • 我会看看这个。但是在此之前进行多次并行调用以设置一个键值对似乎是一个更好的选择。
    猜你喜欢
    • 1970-01-01
    • 2021-12-25
    • 2021-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-01
    • 2014-07-14
    • 1970-01-01
    相关资源
    最近更新 更多