C# Redis实战(六)

释放双眼,带上耳机,听听看~!

六、查询数据

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

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



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1using (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                }
18

以上代码实现了匹配所在部门来查询数据的功能,输入.NET,过滤掉Java部门的一人。查询结果如下:

2**、通过key来查询数据**

在Redis中可以通过输入keys * 来查询当前数据库中所有的key,C#中我们可以通过以下代码来实现相同效果。


1
2
3
1                var user = redisClient.GetTypedClient<User>();
2                var userKeyList = user.GetAllKeys();
3

代码中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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1                using (var redisClient = RedisManager.GetClient())
2                {
3                    var keyValue = string.Empty;
4                    try
5                    {
6                        var user = redisClient.GetTypedClient&lt;User&gt;();
7                        var value = user.GetValue(txtKey.Text);  
8                        keyValue += &quot;ID=&quot; + value.Id + &quot;  姓名:&quot; + value.Name + &quot;  所在部门:&quot; + 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                }
17

效果如下:

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

给TA打赏
共{{data.count}}人
人已打赏
安全技术

网站制作需要素材的实用网站

2021-12-21 16:36:11

安全技术

从零搭建自己的SpringBoot后台框架(二十三)

2022-1-12 12:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索