c# - 从 Redis 缓存数据库中获取所有键

标签 c# caching stackexchange.redis

我将 Redis 缓存用于缓存目的(特别是 stackexchange.Redis C# 驱动程序。想知道是否有任何方法可以在任何时间点获取缓存中可用的所有键。我的意思是类似的我可以在 ASP.NET cache 对象中做的事情(下面的代码示例)

var keys = Cache.GetEnumerator();                               
while(keys.MoveNext())
{
     keys.Key.ToString() // Key
}

Redis documentation talks about KESY command但是 stackexchange.Redis 是否有该命令的实现。

通过 connection.GetDataBase() 实例调试,我没有看到任何方法/属性。

有什么想法吗?

最佳答案

你需要的函数在IServer接口(interface)下,可以通过:

ConnectionMultiplexer m = CreateConnection();
m.GetServer("host").Keys();

请注意,在 2.8 版之前的 redis 服务器将使用您提到的 KEYS 命令,并且在某些情况下可能会非常慢。但是,如果您使用 redis 2.8+ - 它将改用 SCAN 命令,这样性能更好。还要确保您确实需要获得所有 key ,在我的实践中我从来不需要这个。

关于c# - 从 Redis 缓存数据库中获取所有键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37436429/

相关文章:

javascript - 为什么这个 JavaScript 函数中有一个额外的变量?

redis - Stackexchange.Redis,我可以一次发布到多个 channel 吗?

redis - 如何找出我的 key 存储在 Redis Cache/db 中的时间?

redis - 通过 StackExchange.Redis 在 Redis 中建立二级索引

c# - 组件和服务依赖项之间有什么区别?

c# - LZ复杂度算法

python - 如何清除 memoize 缓存?

C# : Cancelling MySqlCommand using CancellationToken giving NULLReferenceException

JavaScript 不能在 PartialView 上运行

ruby-on-rails - 如何缓存对象为多个请求存储它们?