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 = , Name = "刘备" };
Person p2 = new Person() { Id = , Name = "关羽" };
Person p3 = new Person() { Id = , Name = "张飞" };
Person p4 = new Person() { Id = , Name = "曹操" };
Person p5 = new Person() { Id = , Name = "典韦" };
Person p6 = new Person() { Id = , 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 == ).First().Name); //刘备
//注意,用IRedisTypedClient的对象IRPerson的Srore()添加的才能用IRPerson()方法读取
Response.Write(IRPerson.GetAll().First(m => m.Id == ).Name); //关羽          //------------------------------------------删除-------------------------------------------- IRPerson.Delete(p1); //删除 刘备
Response.Write(IRPerson.GetAll().Count()); //
IRPerson.DeleteById(); //删除 关羽
Response.Write(IRPerson.GetAll().Count()); //
IRPerson.DeleteByIds(new List<int> { , }); //删除张飞 曹操
Response.Write(IRPerson.GetAll().Count()); //
IRPerson.DeleteAll(); //全部删除
Response.Write(IRPerson.GetAll().Count()); //
} 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 = , Name = "刘备" };
Person p2 = new Person() { Id = , Name = "关羽" };
Person p3 = new Person() { Id = , Name = "张飞" };
Person p4 = new Person() { Id = , Name = "曹操" };
Person p5 = new Person() { Id = , Name = "典韦" };
Person p6 = new Person() { Id = , 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 = , Name = "撼地神牛" };
RClient.Set("urn:person:1", p7);
Response.Write(IRPerson.GetAll().First(m => m.Id == ).Name); //输出 撼地神牛
} return Content("");
}

ServiceStack.Redis 之 IRedisTypedClient 04_转的更多相关文章

  1. ServiceStack.Redis 之 IRedisTypedClient

    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. Linux就这个范儿 第16章 谁都可以从头再来--从头开始编译一套Linux系统 nsswitch.conf配置文件

    Linux就这个范儿 第16章 谁都可以从头再来--从头开始编译一套Linux系统  nsswitch.conf配置文件 朋友们,今天我对你们说,在此时此刻,我们虽然遭受种种困难和挫折,我仍然有一个梦 ...

  2. Linux就这个范儿 第10章 生死与共的兄弟

    Linux就这个范儿 第10章 生死与共的兄弟 就说Linux系统的开机.必须经过加载BIOS.读取MBR.Boot Loader.加载内核.启动init进程并确定运行等级.执行初始化脚本.启动内核模 ...

  3. App开发需要了解的基本技术

    本文针对小白用户对App做一个简单的介绍,首先要了解App都有哪些类型,不同的类型适用于哪些需求,用户可以根据自己的需求选择不同的App开发. 一 App有哪些形式 WebApp:简单来说,Web A ...

  4. 一些Demo链接

    youtube下载神器:https://github.com/rg3/youtube-dl我擦咧vim插件:https://github.com/Valloric/YouCompleteMevim插件 ...

  5. Android --Activity与Fragment通讯

    参考博客:详解Fragment跟Activity之间的通信 Activity中方法 private OnSearchListener mSearchListener; /** *定义一个借口 **/ ...

  6. RFS_窗口或区域之间的切换

    1.  测试用例描述 [前置条件]: 1. 已经登录系统 [测试步骤]: 1. 验证登录成功 2. 选择[用户管理]菜单 3. 打开[新增用户]页面 4. 输入必填字段,点击[Submit]按钮 [预 ...

  7. Vue.2.0.5-条件渲染

    v-if 在字符串模板中,如 Handlebars ,我们得像这样写一个条件块: <!-- Handlebars 模板 --> {{#if ok}} <h1>Yes</h ...

  8. hive DDL

    官网地址:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL https://cwiki.apache.org/co ...

  9. oracle恢复备份数据

    sqlplus链接数据库: 1.sqlplus 用户名/密码@IP地址/数据库名称 2.sqlplus 用户名/密码@数据库名称 注:第二种方法要在tnsnames.oRA文件中配置数据库名称 链接断 ...

  10. YII实现Memcache故障转移的配置办法

    YII在默认配置下连接Memcache失败时会报错,要想实现故障转移就要改一下配置和代码 1.首先修改一下YII的 caching/CMemCache.php,我的版本是 1.1.7 找到 $cach ...