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>)示例:

        public ActionResult Index()
{
Person p1 = new Person() { Id = 1, Name = "刘备" };
Person p2 = new Person() { Id = 2, Name = "关羽" };
Person p3 = new Person() { Id = 3, Name = "张飞" };
Person p4 = new Person() { Id = 4, Name = "曹操" };
Person p5 = new Person() { Id = 5, Name = "典韦" };
Person p6 = new Person() { Id = 6, Name = "郭嘉" };
List<Person> ListPerson = new List<Person>() { p2,p3,p4,p5,p6 }; using (IRedisClient RClient = prcm.GetClient())
{
IRedisTypedClient<Person> IRPerson = RClient.As<Person>();
IRPerson.DeleteAll(); //------------------------------------------添加-------------------------------------------- //添加单条数据
IRPerson.Store(p1);
//添加多条数据
IRPerson.StoreAll(ListPerson); //------------------------------------------查询-------------------------------------------- //Linq支持
Response.Write(IRPerson.GetAll().Where(m => m.Id == 1).First().Name); //刘备
//注意,用IRedisTypedClient的对象IRPerson的Srore()添加的才能用IRPerson()方法读取
Response.Write(IRPerson.GetAll().First(m => m.Id == 2).Name); //关羽          //------------------------------------------删除-------------------------------------------- IRPerson.Delete(p1); //删除 刘备
Response.Write(IRPerson.GetAll().Count()); //5
IRPerson.DeleteById(2); //删除 关羽
Response.Write(IRPerson.GetAll().Count()); //4
IRPerson.DeleteByIds(new List<int> { 3,4 }); //删除张飞 曹操
Response.Write(IRPerson.GetAll().Count()); //2
IRPerson.DeleteAll(); //全部删除
Response.Write(IRPerson.GetAll().Count()); //0
} return Content("");
}

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

        public ActionResult Index()
{
PooledRedisClientManager prcm = new PooledRedisClientManager(new List<string>() { "127.0.0.1" }, new List<string>() { "127.0.0.1" }, RedisConfig); Person p1 = new Person() { Id = 1, Name = "刘备" };
Person p2 = new Person() { Id = 2, Name = "关羽" };
Person p3 = new Person() { Id = 3, Name = "张飞" };
Person p4 = new Person() { Id = 4, Name = "曹操" };
Person p5 = new Person() { Id = 5, Name = "典韦" };
Person p6 = new Person() { Id = 6, Name = "郭嘉" };
List<Person> ListPerson = new List<Person>() { p2,p3,p4,p5,p6 }; using (IRedisClient RClient = prcm.GetClient())
{
IRedisTypedClient<Person> IRPerson = RClient.As<Person>();
IRPerson.StoreAll(ListPerson); //读取所有的Key
List<string> ListKeys = IRPerson.GetAllKeys();
foreach (string key in ListKeys)
{
Response.Write(key + "<br/>");
} //修改的话只能通过Key修改
//urn:person:3
//urn:person:4
//urn:person:5
//ids:Person
//urn:person:1
//urn:person:6
//urn:person:2
Person p7 = new Person() { Id = 8, Name = "撼地神牛" };
RClient.Set("urn:person:1", p7);
Response.Write(IRPerson.GetAll().First(m => m.Id == 8).Name); //输出 撼地神牛
} return Content("");
}

ServiceStack.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泛型存储后getById问题

    关于ServiceStack.Redis实体存储常用的有一下几个方法 StoreAsHash<T>(T entity)  //将对象按照Hash存储 Redis.As<T>() ...

  4. servicestack.redis工具类

    using System;using System.Collections.Generic;using System.Linq;using ServiceStack.Redis;using Servi ...

  5. 使用ServiceStack.Redis实现Redis数据读写

    原文:使用ServiceStack.Redis实现Redis数据读写 User.cs实体类 public class User { public string Name { get; set; } p ...

  6. Service-stack.redis 使用PooledRedisClientManager 速度慢的原因之一

    现在越来越多的开发者使用service-stack.redis 来进行redis的访问,但是获取redisclient的方式有多种方式,其中有一种从缓冲池获取client的方式很是得到大家的认可. L ...

  7. .Net使用Redis详解之ServiceStack.Redis(七)

    序言 本篇从.Net如何接入Reis开始,直至.Net对Redis的各种操作,为了方便学习与做为文档的查看,我做一遍注释展现,其中会对list的阻塞功能和事务的运用做二个案例,进行记录学习. Redi ...

  8. ServiceStack.Redis订阅发布服务的调用(Z)

      1.Redis订阅发布介绍Redis订阅发布是一种消息通信模式:发布者(publisher)发送消息,订阅者(Subscriber)接受消息.类似于设计模式中的观察者模式.发布者和订阅者之间使用频 ...

  9. serviceStack.Redis 在PooledRedisClientManager 中设置密码

    ServiceStack.Redis 是一个C#访问Redis的客户端,可以说可以通过它实现所有需要Redis-Cli的功能.但是今天我在主Redis 实例设置了访问密码,而在slave 上没有设置, ...

随机推荐

  1. ubuntu下创建c语言程序之hello world

    将要学习c语言了,先记录一下在ubuntu下,使用vim创建一个最基本的hello world程序: 打开终端,使用cd命令转到操作的目录,如我在home下的program files文件内创建, 就 ...

  2. tp集成支付宝担保支付

    现在的网站功能越来越全乎了,很多网站都需要做支付功能,而且很多大平台都提供了各式各样的api来扩充自己的用户和开发者.话说,这种使用大平台的api来做支付,无论是从成本上还是从开发效率上都是很好的选择 ...

  3. struts启动报错Javassist library is missing

    很久不用struts2,最近在配置的时候,启动服务器报错 Caused by: java.lang.ExceptionInInitializerError at com.opensymphony.xw ...

  4. .NET设计模式(9):桥接模式(Bridge Pattern)

      .NET设计模式(9):桥接模式(Bridge Pattern)   桥接模式(Bridge Pattern) --.NET设计模式系列之九 年月 实现代码如下:..所谓抽象和实现沿着各自维度的变 ...

  5. 消息处理之EventBus ——使用篇

    以前的几篇文章简单的介绍了一下UI线程和子线程之间的线程通信利器Handler,以及顺便介绍了一下SyncTask和HeadlerThread.这里介绍另一线程通信利器EventBus. EventB ...

  6. html-----003

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. 一、C# 概述

    1.托管执行环境 2.程序集 3.关键字:C#保留字 4.除了C#定义的关键字之外,开发者可以提供他们自己的名称,编程语言将这些名称称为标识符 5.如果关键字包含一个"@"前缀,那 ...

  8. C# 反射 表达式树 模糊搜索

    反射实体T,非datetime字段反射获取表达式树   public static Expression<Func<T, bool>> GetSearchExpression& ...

  9. 网络编程(学习整理)---3--(Udp)FeiQ实现广播消息群发

    1.广播群发消息: 这里使用的任然是UDP协议,使用方法还是比较简单的! 我就记录一下需要注意的一些地方(笔记): (1)这里是在局域网内,借用FeiQ聊天软件,编写一段程序,实现对局域网内的每一个登 ...

  10. 制作Net程序的帮助文档--总结

    一.工具的准备 目前,一般采用Sandcastle Help File Builder工具来制作.Net程序帮助文档,该工具主要是利用Xml文档里的信息以及DLL文件来生成完整的帮助文档.在Visua ...