zoukankan      html  css  js  c++  java
  • C# Redis实战(六)

    六、查询数据

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

     
    1、使用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. }  
    效果如下:
  • 相关阅读:
    Log4net实例(转自http://zjuoliver.blog.163.com/blog/static/5101920084299524443/)
    不同数据库获取新增加的主键值
    asp.net中的ALERT类
    Log4net操作指南(转自http://www.cnblogs.com/dragon/archive/2005/03/24/124254.html)
    阅读器关闭时尝试调用Read无效
    LINQ中文教程LINQ初体验之LINQ to Object
    vs2010设置默认浏览器
    附加数据库时出现错误解决办法
    oracle安装后,第一次登陆的步骤
    已有打开的与此 Command 相关联的 DataReader,必须首先将它关闭
  • 原文地址:https://www.cnblogs.com/liuguanghai/p/6082979.html
Copyright © 2011-2022 走看看