ServiceStack.Redis 之 IRedisTypedClient 04_转
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_转的更多相关文章
- ServiceStack.Redis 之 IRedisTypedClient
IRedisTypedClient IRedisTypedClient类相当于IRedicClient的强类型版,其方法与属性大多数与IRedisClient类似. 它支持在Redis中使用Linq查 ...
- ServiceStack.Redis 之 IRedisTypedClient<第四篇>
IRedisTypedClient IRedisTypedClient类相当于IRedicClient的强类型版,其方法与属性大多数与IRedisClient类似. 它支持在Redis中使用Linq查 ...
- ServiceStack.Redis泛型存储后getById问题
关于ServiceStack.Redis实体存储常用的有一下几个方法 StoreAsHash<T>(T entity) //将对象按照Hash存储 Redis.As<T>() ...
- servicestack.redis工具类
using System;using System.Collections.Generic;using System.Linq;using ServiceStack.Redis;using Servi ...
- 使用ServiceStack.Redis实现Redis数据读写
原文:使用ServiceStack.Redis实现Redis数据读写 User.cs实体类 public class User { public string Name { get; set; } p ...
- Service-stack.redis 使用PooledRedisClientManager 速度慢的原因之一
现在越来越多的开发者使用service-stack.redis 来进行redis的访问,但是获取redisclient的方式有多种方式,其中有一种从缓冲池获取client的方式很是得到大家的认可. L ...
- .Net使用Redis详解之ServiceStack.Redis(七)
序言 本篇从.Net如何接入Reis开始,直至.Net对Redis的各种操作,为了方便学习与做为文档的查看,我做一遍注释展现,其中会对list的阻塞功能和事务的运用做二个案例,进行记录学习. Redi ...
- ServiceStack.Redis订阅发布服务的调用(Z)
1.Redis订阅发布介绍Redis订阅发布是一种消息通信模式:发布者(publisher)发送消息,订阅者(Subscriber)接受消息.类似于设计模式中的观察者模式.发布者和订阅者之间使用频 ...
- serviceStack.Redis 在PooledRedisClientManager 中设置密码
ServiceStack.Redis 是一个C#访问Redis的客户端,可以说可以通过它实现所有需要Redis-Cli的功能.但是今天我在主Redis 实例设置了访问密码,而在slave 上没有设置, ...
随机推荐
- [BS-23] AFN网络请求上拉/下拉刷新的细节问题总结
上拉/下拉刷新的细节问题总结 1.如果导航栏有透明色,则也需要设置header自动改变透明度 self.tableView.mj_header.automaticallyChangeAlpha = Y ...
- underscore源码解析
(function() { // 创建一个全局对象, 在浏览器中表示为window对象, 在Node.js中表示global对象 var root = this; // 保存"_" ...
- Hadoop学习(3)-- 安装1.x版本
Hadoop有三种安装模式,分别为单机模式.伪分布式模式和完全分布式模式(集群模式).本文安装版本是hadoop-1.1.2,hadoop-2.x版本安装请参考:http://www.cnblogs. ...
- C# 微信海报
最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来.我们都知道计算机技术发展日新月异,速度惊人的快,你我稍不留神,就会被慢慢淘汰!因此:每日不间断的学习是避免被 ...
- python中的yield
在理解yield之前,要首先明白什么是generator,在理解generator之前首先要理解可迭代的概念. 可迭代(iterables)在你创建一个list的时候,可以逐个读取其中的元素,该逐个读 ...
- mysql:键缓存
myisam的主要优化参数: key_buffer_size - 这对MyISAM表来说非常重要,是用来设置整个MySQL中常规Key Cache的大小.一般来说,如果MySQL运行在32位平台,此值 ...
- leetcode-5 最长回文子串(动态规划)
题目要求: * 给定字符串,求解最长回文子串 * 字符串最长为1000 * 存在独一无二的最长回文字符串 求解思路: * 回文字符串的子串也是回文,比如P[i,j](表示以i开始以j结束的子串)是回文 ...
- pgbouncer+pg(fdw)+pg(datanode)分表方案
pgbouncer+pg(fdw)+pg(datanode)分表方案 (环境RHEL6.5,PG9.4.5,pgbouncer1.5.4,libevent2.0.22) 方案架构图如下: pgboun ...
- ads 调试
1.路径错误,中文名称 2.定义错误
- spring 官方下载地址
SPRING官方网站改版后,建议都是通过Maven和Gradle下载,对不使用Maven和Gradle开发项目的,下载就非常麻烦. 下给出Spring Framework jar官方直接下载路径: h ...