我正在按照此示例在Dotnet Core上实现Redis缓存。
不幸的是,似乎Get(key)和GetString(key)都只返回值,而不是诸如过期之类的元数据。
当我使用redis-cli时,我可以使用来检索数据和元数据 HGETALL key
HGETALL key
1) "absexp" 2) "637153531959962660" 3) "data" 4) "[{<snip>}]" 5) "sldexp" 6) "-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);