IRedisTypedClient

  IRedisTypedClient类相当于IRedicClient的强类型版,其方法与属性大多数与IRedisClient类似。

  它支持在Redis中使用Linq查询的强大的类,它本身是一个泛型,IRedisClient的泛型方法As获得对象。

  其方法原型如下:

    IRedisTypedClient<T> As<T>();

  1、IEntityStore<T>接口内容

  其中IRedisTypedClient这个类实现了这个接口IEntityStore<T>,该接口要求提供的功能如下:

方法 说明
Delete 根据实体删除一条记录
DeleteAll 全部删除
DeleteById 根据Id删除一条记录
DeleteByIds 根据输入的多个Id删除多条记录
GetAll 获取所有该类型的记录
GetById 根据Id获取一条记录
GetByIds 根据输入的多个Id获取多条记录
Store 根据传入的实体,添加一条记录
StoreAll 根据传入的实体集合,添加多条记录

  Linq查询(针对于GetAll方法返回的IList<T>)示例:

 
  1. public ActionResult Index()
  2. {
  3. Person p1 = new Person() { Id = 1, Name = "刘备" };
  4. Person p2 = new Person() { Id = 2, Name = "关羽" };
  5. Person p3 = new Person() { Id = 3, Name = "张飞" };
  6. Person p4 = new Person() { Id = 4, Name = "曹操" };
  7. Person p5 = new Person() { Id = 5, Name = "典韦" };
  8. Person p6 = new Person() { Id = 6, Name = "郭嘉" };
  9. List<Person> ListPerson = new List<Person>() { p2,p3,p4,p5,p6 };
  10.  
  11. using (IRedisClient RClient = prcm.GetClient())
  12. {
  13. IRedisTypedClient<Person> IRPerson = RClient.As<Person>();
  14. IRPerson.DeleteAll();
  15.  
  16. //------------------------------------------添加--------------------------------------------
  17.  
  18. //添加单条数据
  19. IRPerson.Store(p1);
  20. //添加多条数据
  21. IRPerson.StoreAll(ListPerson);
  22.  
  23. //------------------------------------------查询--------------------------------------------
  24.  
  25. //Linq支持
  26. Response.Write(IRPerson.GetAll().Where(m => m.Id == 1).First().Name); //刘备
  27. //注意,用IRedisTypedClient的对象IRPerson的Srore()添加的才能用IRPerson()方法读取
  28. Response.Write(IRPerson.GetAll().First(m => m.Id == 2).Name); //关羽
  29.  
  30.          //------------------------------------------删除--------------------------------------------
  31.  
  32. IRPerson.Delete(p1); //删除 刘备
  33. Response.Write(IRPerson.GetAll().Count()); //5
  34. IRPerson.DeleteById(2); //删除 关羽
  35. Response.Write(IRPerson.GetAll().Count()); //4
  36. IRPerson.DeleteByIds(new List<int> { 3,4 }); //删除张飞 曹操
  37. Response.Write(IRPerson.GetAll().Count()); //2
  38. IRPerson.DeleteAll(); //全部删除
  39. Response.Write(IRPerson.GetAll().Count()); //0
  40. }
  41.  
  42. return Content("");
  43. }
 

  另外,由于该接口并没有实现修改的方法,所以修改还得通过IRedisClient的实例:

 
  1. public ActionResult Index()
  2. {
  3. PooledRedisClientManager prcm = new PooledRedisClientManager(new List<string>() { "127.0.0.1" }, new List<string>() { "127.0.0.1" }, RedisConfig);
  4.  
  5. Person p1 = new Person() { Id = 1, Name = "刘备" };
  6. Person p2 = new Person() { Id = 2, Name = "关羽" };
  7. Person p3 = new Person() { Id = 3, Name = "张飞" };
  8. Person p4 = new Person() { Id = 4, Name = "曹操" };
  9. Person p5 = new Person() { Id = 5, Name = "典韦" };
  10. Person p6 = new Person() { Id = 6, Name = "郭嘉" };
  11. List<Person> ListPerson = new List<Person>() { p2,p3,p4,p5,p6 };
  12.  
  13. using (IRedisClient RClient = prcm.GetClient())
  14. {
  15. IRedisTypedClient<Person> IRPerson = RClient.As<Person>();
  16. IRPerson.StoreAll(ListPerson);
  17.  
  18. //读取所有的Key
  19. List<string> ListKeys = IRPerson.GetAllKeys();
  20. foreach (string key in ListKeys)
  21. {
  22. Response.Write(key + "<br/>");
  23. }
  24.  
  25. //修改的话只能通过Key修改
  26. //urn:person:3
  27. //urn:person:4
  28. //urn:person:5
  29. //ids:Person
  30. //urn:person:1
  31. //urn:person:6
  32. //urn:person:2
  33. Person p7 = new Person() { Id = 8, Name = "撼地神牛" };
  34. RClient.Set("urn:person:1", p7);
  35. Response.Write(IRPerson.GetAll().First(m => m.Id == 8).Name); //输出 撼地神牛
  36. }
  37.  
  38. return Content("");
  39. }
转自:http://www.cnblogs.com/kissdodog/p/3606017.html

Redis IRedisTypedClient的更多相关文章

  1. ServiceStack.Redis 之 IRedisTypedClient 04_转

    IRedisTypedClient IRedisTypedClient类相当于IRedicClient的强类型版,其方法与属性大多数与IRedisClient类似. 它支持在Redis中使用Linq查 ...

  2. ServiceStack.Redis 之 IRedisTypedClient

    IRedisTypedClient IRedisTypedClient类相当于IRedicClient的强类型版,其方法与属性大多数与IRedisClient类似. 它支持在Redis中使用Linq查 ...

  3. ServiceStack.Redis 之 IRedisTypedClient<第四篇>

    IRedisTypedClient IRedisTypedClient类相当于IRedicClient的强类型版,其方法与属性大多数与IRedisClient类似. 它支持在Redis中使用Linq查 ...

  4. .NET中使用Redis (二)

    很久以前写了一篇文章 .NET中使用Redis 介绍了如何安装Redis服务端,以及如何在.NET中调用Redis读取数据.本文简单介绍如何设计NoSQL数据库,以及如何使用Redis来存储对象. 和 ...

  5. 基于C#的MongoDB数据库开发应用(4)--Redis的安装及使用

    在前面介绍了三篇关于MongoDB数据库的开发使用文章,严格来讲这个不能归类于MongoDB数据库开发,不过Redis又有着和MongoDB数据库非常密切的关系,它们两者很接近,Redis主要是内存中 ...

  6. ASP.NET Redis 开发

    文件并发(日志处理)--队列--Redis+Log4Net Redis简介 Redis是一个开源的,使用C语言编写,面向“键/值”对类型数据的分布式NoSQL数据库系统,特点是高性能,持久存储,适应高 ...

  7. .NET中Redis安装部署及使用方法简介附->开源Redis操作辅助类

    Redis是一个用的比较广泛的Key/Value的内存数据库,新浪微博.Github.StackOverflow 等大型应用中都用其作为缓存,Redis的官网为http://redis.io/. Re ...

  8. Redis GetTypedClient

    C#操作Redis   未包含GetTypedClient定义 原创,转载请注明出处. VS版本:2015 用NuGet安装了Redis的包 按照百度的各种教程来操作,但是发现网上下载的DEMO可以正 ...

  9. Redis学习笔记~是时候为Redis实现一个仓储了,RedisRepository来了

    回到目录 之前写了不少关于仓储的文章,所以,自己习惯把自己叫仓储大叔,上次写的XMLRepository得到了大家的好评,也有不少朋友给我发email,进行一些知识的探讨,今天主要来实现一个Redis ...

随机推荐

  1. 论文解析 "A Non-Local Cost Aggregation Method for Stereo Matching"

    传统的使用窗口的方法缺陷主要在 1.窗口外的像素不能参与匹配判断. 2.在低纹理区域很容易产生错误匹配 论文的主要贡献在代价聚类上(左右图像带匹配点/区域的匹配代价计算),目标是图像内所有点都对该点传 ...

  2. Linux shell join命令详解

    Linux join命令 2012-02-09 17:49:00| 分类: SHELL | 标签:linux join 文件连接 |字号 订阅join命令 功能:“将两个文件里指定栏位同样的行连接起来 ...

  3. SpringBoot学习笔记(2):引入Spring Security

    SpringBoot学习笔记(2):用Spring Security来保护你的应用 快速开始 本指南将引导您完成使用受Spring Security保护的资源创建简单Web应用程序的过程. 参考资料: ...

  4. Android FrameLayout单帧布局

    FrameLayout:所有控件位于左上角,并且直接覆盖前面的子元素. 在最上方显示的层加上: android:clickable="true" 可以避免点击上层触发底层. 实例: ...

  5. [原创]java WEB学习笔记41:简单标签之带属性的自定义标签(输出指定文件,计算并输出两个数的最大值 demo)

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  6. 3D卡片折叠动画自定义下拉框

    在线演示 本地下载

  7. 比较分析与数组相关的sizeof和strlen

    首先,我们要清楚sizeof是C/C++中的一个操作符,其作用就是返回一个对象或者类型所占的内存字节数. 而,strlen是一个函数,函数原型为: size_t strlen(const char * ...

  8. STL 之map解决 Message Flood(原字典树问题)

                                                                                      Message Flood Time ...

  9. 如何处理异常? catch Exception OR catch Throwable

    在Java中,当你需要统一处理异常的时候,你是会选择catch (Exception),还是直接catch (Throwable)? Java的异常体系 Throwable: Java中所有异常和错误 ...

  10. XP最高支持IE8

    1.https://www.microsoft.com/zh-CN/download/details.aspx?id=24488 适用于 Windows XP 的 Internet Explorer ...