当前位置:   article > 正文

C# Redis实战(六)

c#查看redis里面包含的子集

六、查询数据

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. if (userList.Count > 0)
  6. {
  7. var htmlStr = string.Empty;
  8. foreach (var u in userList)
  9. {
  10. htmlStr += "<li>ID=" + u.Id + "  姓名:" + u.Name + "  所在部门:" + u.Job.Position + "</li>";
  11. }
  12. lblPeople.Text = htmlStr;
  13. }
  14. lblShow.Text = "筛选后共有:" + userList.Count.ToString() + "人!";
  15. }

以上代码实现了匹配所在部门来查询数据的功能,输入.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. }
效果如下:

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



转载于:https://www.cnblogs.com/QiuJL/p/4524197.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/635087
推荐阅读
相关标签
  

闽ICP备14008679号