2012-11-18 82 views
6

我有一個redis與許多鍵(大約100),我想只從ClassA的類型中選擇鍵(只是一個例子)。Redis客戶端GetAll鍵從某個類

現在我正在做GetAllKeys,然後在所有項目的foreach循環中選擇相關的鍵。

是否有可能只選擇相關的鍵並用一個函數來獲取它們?

當我做GETALL我得到的只有2項,而我應該避開45

+0

不要這樣做。 Redis不是一個關係數據庫。你不應該在應用程序中使用KEYS命令 - 它更像是一個調試命令。這種設計不會與Redis進行擴展。 –

回答

4

下面的代碼將幫助你找到特定的鍵,你必須字符串後指定*通配符,將只取特定鍵來自Redis服務器。

using (RedisClient redisClient = new RedisClient("localhost")) 
{ 
     string searchString = "ClassA*"; 

     var getSpecificKeys = redisClient.SearchKeys(searchString); 

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

從http://redis.io/commands/keys 警告:將KEYS視爲僅應在生產環境中謹慎使用的命令。在對大型數據庫執行它時可能會損壞性能。此命令用於調試和特殊操作,例如更改您的密鑰空間佈局。請勿在常規應用程序代碼中使用KEYS。如果您正在尋找一種方法在您的密鑰空間的子集中查找密鑰,請考慮使用集合。 – DanB

+0

如果我使用IDatabase而不是RedisClient,該怎麼辦?我如何獲得數據庫中的所有密鑰? – ayasha