Redis客户端:获取特定类别的所有键

6

我有一个 Redis 数据库,其中存储了大量的键(约 100),我希望只选择 ClassA 类型的键(这只是一个示例)。

现在,我正在使用 GetAllKeys 方法获取所有键,然后在 foreach 循环中选择需要的键。

是否有可能只用一个函数选择所需的键并将它们全部获取?

当我使用 GetAll 方法时,我只得到了 2 个项,而应该得到约 45 个。


不要这样做。Redis不是关系型数据库。你不应该在应用程序中使用KEYS命令,它更多的是一个调试命令。这种设计在Redis中无法扩展。 - Didier Spezia
1个回答

4
下面的代码将帮助您查找特定的键,您需要在字符串后指定 * 通配符字符,才能从 Redis 服务器获取特定的键。
 using (RedisClient redisClient = new RedisClient("localhost"))
 {
      string searchString = "ClassA*";

      var getSpecificKeys = redisClient.SearchKeys(searchString);

      foreach (var getKey in getSpecificKeys)
      {
           // operation
      }
  }

3
警告:请谨慎使用 KEYS 命令,它只应在生产环境中进行特殊操作时使用,例如更改键空间布局。当针对大型数据库执行此命令时,它可能会破坏性能。不要在常规应用程序代码中使用 KEYS 命令。如果你想要在键空间子集中查找键的方法,请考虑使用 sets(集合)。 - DanB
如果我使用IDatabase而不是RedisClient会怎样?我如何获取数据库中的所有键? - ayasha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接