如何使用 Dotnet Core 获取 Redis 上密钥的过期时间?
How to get expiration time for a key on Redis using Dotnet Core?
我正在关注 this example 在 Dotnet Core 上实现 Redis 缓存。
不幸的是,似乎 Get(key) 和 GetString(key) 都只是 return 值,而不是过期等元数据。
当我使用 redis-cli 时,我可以使用 HGETALL key
检索数据和元数据
1) "absexp"
2) "637153531959962660"
3) "data"
4) "[{<snip>}]"
5) "sldexp"
6) "-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);
我正在关注 this example 在 Dotnet Core 上实现 Redis 缓存。
不幸的是,似乎 Get(key) 和 GetString(key) 都只是 return 值,而不是过期等元数据。
当我使用 redis-cli 时,我可以使用 HGETALL key
1) "absexp"
2) "637153531959962660"
3) "data"
4) "[{<snip>}]"
5) "sldexp"
6) "-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);