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

    六、查询数据

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

    1、使用Linq匹配关键字查询
    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#中我们可以通过以下代码来实现相同效果。
                    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值了,代码如下:
                    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;
                    }
    效果如下:

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



  • 相关阅读:
    PAT Basic 1077 互评成绩计算 (20 分)
    PAT Basic 1055 集体照 (25 分)
    PAT Basic 1059 C语言竞赛 (20 分)
    PAT Basic 1072 开学寄语 (20 分)
    PAT Basic 1049 数列的片段和 (20 分)
    蓝桥杯BASIC-13 数列排序
    蓝桥杯入门——3.序列求和
    蓝桥杯入门——2.圆的面积
    蓝桥杯入门——1.Fibonacci数列
    树的总结(遍历,BST,AVL原型,堆,练习题)
  • 原文地址:https://www.cnblogs.com/QiuJL/p/4524197.html
Copyright © 2011-2022 走看看