当前位置: 首页 > 面试题库 >

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

曹君墨
2023-03-14
问题内容

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

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

当我使用redis-cli时,我可以使用来检索数据和元数据 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);


 类似资料:
  • 问题内容: 我正在使用Bottle开发应用程序。在我的注册表中,我要通过邮件确认带有唯一密钥的电子邮件。我将此密钥存储在REDIS中,有效期为4天。如果用户未在4天内确认电子邮件,则密钥将过期。为此,我想从数据库(mongoDB)中永久删除用户条目。 当然,我不需要对我的Redis服务器进行连续轮询来检查密钥是否存在。 有什么办法可以从Redis获得回调吗? 或者还有其他有效的方法吗? 问题答案:

  • 问题内容: 我们有以下用例:每当某个密钥过期时,我们都需要根据其值来得到通知并执行某些操作。但是,当redis触发该事件时,当我们稍后尝试访问它时,该密钥已经从数据库中删除了,这当然是可以预期的。 现在,有一种方法可以在过期后再次访问该条目?我猜不会。 第二种选择:有没有一种方法可以让redis在发送这些事件时发布整个值对象而不是仅仅发布键?我想可以通过Lua添加它,但是如果可能的话,我希望有一个

  • 我正在使用ObjectMapper类将java bean类转换为JSON。 我的豆子班是:-

  • 问题内容: Redis如何实现密钥过期?从这里我了解到Redis存储了密钥将过期的时间,但是这是如何实现的呢? 问题答案: 简而言之-每个Redis对象都有一个过期时间。除非您将对象设置为过期,否则该时间为“从不”。 现在,到期机制本身是半延迟的。延迟过期意味着您实际上不会在读取对象之前使它们过期。读取对象时,我们检查它的过期时间戳记,如果它是过去的,则不返回任何内容,并在到达该对象时删除该对象。

  • 我在使用来自Firebase的新FiRecovery时遇到了问题。 情境:我有一个 我使用集合(“房间”)创建房间。添加(房间) 我想做的是:我需要更新一个房间。 为此,我使用:<代码>集合('room')。doc(房间ID)。更新(update) 因此,我需要在我的收藏中的文档中添加ROOM\u ID: 有没有可能实现这一目标? 另一种方法是为自己创建一个生成的ID: 但我想避免它。

  • 问题内容: 我不明白如何使用commons-dbutils获取自动生成的密钥? 问题答案: 您可以使用。下面是一个例子。给定一个名为的表,该表具有一个自动生成的主键列和一个名为的列,您可以执行以下操作: