C# Redis實戰(六)

6、查詢數據

C# Redis實戰(五)中介紹瞭如何刪除Redis中數據,本篇將繼續介紹Redis中查詢的寫法。

 
一、使用Linq匹配關鍵字查詢
[csharp] view plain copy 在CODE上查看代碼片派生到個人代碼片
  1. using (var redisClient = RedisManager.GetClient())  
  2.                 {  
  3.                     var user = redisClient.GetTypedClient<User>();  
  4.                     var userList = user.GetAll().Where(x => x.Job.Position.Contains(txtScreenPosition.Text)).ToList();  
  5.   
  6.                     if (userList.Count > 0)  
  7.                     {  
  8.                         var htmlStr = string.Empty;  
  9.                         foreach (var u in userList)  
  10.                         {  
  11.                             htmlStr += "<li>ID=" + u.Id + "  姓名:" + u.Name + "  所在部門:" + u.Job.Position + "</li>";  
  12.                         }  
  13.                         lblPeople.Text = htmlStr;  
  14.                     }  
  15.                     lblShow.Text = "篩選後共有:" + userList.Count.ToString() + "人!";  
  16.   
  17.                 }  

以上代碼實現了匹配所在部門來查詢數據的功能,輸入.NET,過濾掉Java部門的一人。查詢結果以下:

2、經過key來查詢數據
在Redis中能夠經過輸入keys * 來查詢當前數據庫中全部的key,C#中咱們能夠經過如下代碼來實現相同效果。
[csharp] view plain copy 在CODE上查看代碼片派生到個人代碼片
  1. var user = redisClient.GetTypedClient<User>();  
  2. var userKeyList = user.GetAllKeys();  

代碼中userKeyList中保存了全部的key

細心的讀者會發現此處查詢到的key數量與數據庫保存的數據量不一樣

咱們逐一說明下:
seq:User:用來維護當前類型User的ID自增序列,用做對象惟一ID,也就是使用GetNextSequence()函數能夠獲取當前數據庫最新的ID的緣由了。

ids:User:同一類型User中全部對象ID的列表,至關於一個索引,包含了全部同爲類型User的ID;
因爲維護了這樣一個分組信息,因此很容易實現GetAll<User>()這樣的功能。

urn:user:1:這纔是保存user對象的key。
在redis-client中輸入:get urn:user:1 獲得json類型數據。

經過上述說明,咱們就能夠很輕鬆的經過key來查詢value值了,代碼以下:
[csharp] view plain copy 在CODE上查看代碼片派生到個人代碼片
  1. using (var redisClient = RedisManager.GetClient())  
  2. {  
  3.     var keyValue = string.Empty;  
  4.     try  
  5.     {  
  6.         var user = redisClient.GetTypedClient<User>();  
  7.         var value = user.GetValue(txtKey.Text);     
  8.         keyValue += "ID=" + value.Id + "  姓名:" + value.Name + "  所在部門:" + value.Job.Position;  
  9.     }  
  10.     catch (Exception ex)  
  11.     {  
  12.         keyValue += ex.ToString();  
  13.     }  
  14.     lblPeople.Text = keyValue.ToJson();  
  15.     lblShow.Text = string.Empty;  
  16. }  
效果以下:
相關文章
相關標籤/搜索