【问题标题】:How to get expiration time for a key on Redis using Dotnet Core?如何使用 Dotnet Core 获取 Redis 上的密钥的到期时间?
【发布时间】:2020-05-09 07:59:55
【问题描述】:

我正在关注this example 在 Dotnet Core 上实现 Redis 缓存。

不幸的是,似乎 Get(key) 和 GetString(key) 都只返回值,而不是过期等元数据。

当我使用 redis-cli 时,我可以使用 HGETALL key 检索数据和元数据

1) "absexp"
2) "637153531959962660"
3) "data"
4) "[{<snip>}]"
5) "sldexp"
6) "-1"

有什么方法可以从我的代码中访问这些元数据?

当然可能有一些变通方法,例如在数据对象本身中添加过期时间或添加包含元数据的第二个键,但两种解决方案都不是很优雅。

【问题讨论】:

    标签: asp.net .net-core redis stackexchange.redis


    【解决方案1】:

    假设您使用的是 Microsoft.Extensions.Caching.StackExchangeRedis。

    无法通过查看 the docs 和来源获得此信息。

    您必须直接使用 StackExchange.Redis 来获取它。

    采用与RedisCache.cs 相同的方法:

    //RedisCacheOptions options as passed to RedisCache contructor.
    ConnectionMultiplexer connection = ConnectionMultiplexer.Connect(options.ConfigurationOptions);
    IDatabase cache = connection.GetDatabase();
    HashEntry[] results = cache.HashGetAll(key);
    

    【讨论】:

    • 感谢您的指点。最后我去了对象周围的包装器。
    猜你喜欢
    • 2011-10-19
    • 1970-01-01
    • 2012-10-21
    • 2016-05-15
    • 2013-10-06
    • 1970-01-01
    • 2020-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多