分享

C# Redis实战(六)

 东鹏图书馆 2015-03-31

六、查询数据


C# Redis实战(五)中介绍了如何删除Redis中数据,本篇将继续介绍Redis中查询的写法。





1、使用Linq匹配关键字查询

  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#中我们可以通过以下代码来实现相同效果。

  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值了,代码如下:

  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. }  
效果如下:






如需转载,请注明出处,本系列博文示例程序下载地址










    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多