一尘不染

如何使用Dotnet Core获取Redis上密钥的到期时间?

redis

我正在按照此示例在Dotnet
Core上实现Redis缓存。

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

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

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

有什么办法可以从我的代码访问此元数据?

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


阅读 485

收藏
2020-06-20

共1个答案

一尘不染

假设您正在使用Microsoft.Extensions.Caching.StackExchangeRedis。

无法通过查看文档和源代码来解决这个问题。

您将必须直接使用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);
2020-06-20