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. 设计模式 笔记 代理模式 Proxy

    //---------------------------15/04/21---------------------------- //Proxy 代理模式-----对象结构型模式 /* 1:意图: ...

  2. Asp.Net_Ajax调用WebService返回Json前台获取循环解析

    利用JQuery的$.ajax()可以很方便的调用 asp.net的后台方法.但往往从后台返回的json字符串不能够正确解析,究其原因,是因为没有对返回的json数据做进一步的加工.其实,这里只需 要 ...

  3. docker之网络管理

    一.安装网桥管理工具 [root@node03 web]# yum install bridge-utils -y 二.docker网络的4种模式 host模式,使用--net=host指定. con ...

  4. Jenkins下载安装

    Jenkins是什么? Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用的是什么平台.这是一个免费的源代码,可以处理任何类型的构建或持续集成.集成Jenkins可以用于一些测 ...

  5. cocos2d-x学习之路(三)——精灵与动作

    这里我们来看看所有游戏引擎中都会出现的一个重要的概念——精灵

  6. C++学习 内存模型和名称空间

    1.单独编译 C++鼓励程序员将组件函数放在独立的文件中,如果只修改了一个文件,则可以只重新编译该文件,然后将它与其他文件的编译版本链接. 一般非常有用的组织程序的策略是把程序分成三部分: 头文件:包 ...

  7. EOS开发基础之五:使用cleos命令行客户端操作EOS——智能合约之Exchange

    先回答一下上一节中留下的问题,为什么我就看不到eosio这个账户中的钱呢?我明明为它create了很多token啊. 对,你是create了,但是没有issue啊.create了1000000000 ...

  8. ubuntu 下配置 开发环境

    1. apache: sudo apt-get install apache2 安装好输入网址测试所否成功: http://localhost 2. mongo 已经安装好了 版本:2.4.8 ref ...

  9. Android 公共库的建立方法

    本文主要介绍在android工程中如何将共用代码建成公共包方便其他工程引用.引用后的工程结构分析.library引入方式的优缺点. 自己也写了一些android公共的库,有兴趣的可以参考 Trinea ...

  10. PAT甲题题解-1003. Emergency (25)-最短路径+路径数目

    给出n个城市,m条边,起始点c1和目的点c2接下来给出n个城市的队伍数以及m条双向边问你求c1到c2的所有最短路径数目,以及其中经过的最多队伍数 先最短路dijkstra,同时建立vector数组pr ...