6、查询数据
一、使用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;
- }
效果以下: