標籤:blog http io ar os 使用 sp for java
六、查詢資料在C# Redis實戰(五)中介紹了如何刪除Redis中資料,本篇將繼續介紹Redis中查詢的寫法。
1、使用Linq匹配關鍵字查詢
[csharp] view plaincopy
- using (var redisClient = RedisManager.GetClient())
- {
- var user = redisClient.GetTypedClient<User>();
- var userList = user.GetAll().Where(x => x.Job.Position.Contains(txtScreenPosition.Text)).ToList();
-
- if (userList.Count > 0)
- {
- var htmlStr = string.Empty;
- foreach (var u in userList)
- {
- htmlStr += "<li>ID=" + u.Id + " 姓名:" + u.Name + " 所在部門:" + u.Job.Position + "</li>";
- }
- lblPeople.Text = htmlStr;
- }
- lblShow.Text = "篩選後共有:" + userList.Count.ToString() + "人!";
-
- }
以上代碼實現了匹配所在部門來查詢資料的功能,輸入.NET,過濾掉Java部門的一人。查詢結果如下:
2
、通過key來查詢資料在Redis中可以通過輸入keys * 來查詢當前資料庫中所有的key,C#中我們可以通過以下代碼來實現相同效果。
[csharp] view plaincopy
- var user = redisClient.GetTypedClient<User>();
- 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 plaincopy
- using (var redisClient = RedisManager.GetClient())
- {
- var keyValue = string.Empty;
- try
- {
- var user = redisClient.GetTypedClient<User>();
- var value = user.GetValue(txtKey.Text);
- keyValue += "ID=" + value.Id + " 姓名:" + value.Name + " 所在部門:" + value.Job.Position;
- }
- catch (Exception ex)
- {
- keyValue += ex.ToString();
- }
- lblPeople.Text = keyValue.ToJson();
- lblShow.Text = string.Empty;
- }
效果如下:
如需轉載,請註明出處,本系列博文樣本程式
C# Redis實戰(六)