Lind.DDD.Repositories.Redis层介绍
之前已经发生了
大叔之前介绍过关于redis的文章,有缓存,队列,分布式pub/sub,数据集缓存以及仓储redis的实现等等,而今天在Lind.DDD的持久化组件里,redis当然也有一席之地,作为当今最红的key/value存储机制,它在nosql的阵营中发挥着无可代替的作用!
下面是redis文章系列的目录,大家可以进行参考,看目录
Redis学习笔记~把redis放在DATA层,作为一种数据源,我认为更合理,也更符合我的面向对象原则
Redis学习笔记~是时候为Redis实现一个仓储了,RedisRepository来了
Redis学习笔记~Redis事务机制与Lind.DDD.Repositories.Redis事务机制的实现
Lind.DDD里的仓储模块,Mongodb有一席之地
aaarticlea/png;base64,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" alt="" />
大叔的Redis仓储结构
aaarticlea/png;base64,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" alt="" />
大叔在进行redis仓储设计时,使用了redis事务机制来维持数据的一致性,这种事务要求它们属于同一个redis连接对象,所以,在SetDataContext方法中实现了这种业务逻辑
public void SetDataContext(object db)
{
try
{
//手动Redis数据库对象,在redis事务时启用
redisDB = (IRedisClient)db;
redisTypedClient = redisDB.GetTypedClient<TEntity>();
table = redisTypedClient.Lists[typeof(TEntity).Name];
}
catch (Exception)
{ throw new ArgumentException("redis.SetDataContext要求db为IRedisClient类型");
} }
让代码去改变我们的生活,改变我们的世界吧!
Lind.DDD.Repositories.Redis层介绍的更多相关文章
- Lind.DDD.Repositories.EF层介绍
回到目录 Lind.DDD.Repositories.EF以下简称Repositories.EF,之所以把它从Lind.DDD中拿出来,完全出于可插拔的考虑,让大家都能休会到IoC的魅力,用到哪种方法 ...
- Lind.DDD.Repositories.Mongo层介绍
回到目录 之前已经发生了 大叔之前讲过被仓储化了的Mongodb,而在大叔开发了Lind.DDD之后,决定把这个东西再搬到本框架的仓储层来,这也是大势所趋的,毕竟mongodb是最像关系数据库的NoS ...
- Redis学习笔记~Redis事务机制与Lind.DDD.Repositories.Redis事务机制的实现
回到目录 Redis本身支持事务,这就是SQL数据库有Transaction一样,而Redis的驱动也支持事务,这在ServiceStack.Redis就有所体现,它也是目前最受业界认可的Redis ...
- Lind.DDD.Events领域事件介绍
回到目录 闲话多说 领域事件大叔感觉是最不好讲的一篇文章,所以拖欠了很久,但最终还是在2015年年前(阴历)把这个知识点讲一下,事件这个东西早在C#1.0时代就有了,那时学起来也是一个费劲,什么是委托 ...
- Lind.DDD.Paging分页模块介绍
回到目录 分页组件网上有很多,MVC.Pager,JSPager等,通过实现方式大体分为前端分页和后端分页,前端分页是前台对list内存本地集合进行分页,缺点就是在大数据情况下,内存占用过高:后端分页 ...
- Lind.DDD.Authorization用户授权介绍
回到目录 Lind.DDD.Authorization是Lind.DDD框架的组成部分,之所以把它封装到框架里,原因就是它的通用性,几乎在任何一个系统中,都少不了用户授权功能,用户授权对于任何一个系统 ...
- Lind.DDD敏捷领域驱动框架~介绍
回到占占推荐博客索引 最近觉得自己的框架过于复杂,在实现开发使用中有些不爽,自己的朋友们也经常和我说,框架太麻烦了,要引用的类库太多:之前架构之所以这样设计,完全出于对职责分离和代码附复用的考虑,主要 ...
- Lind.DDD敏捷领域驱动框架~Lind.DDD各层介绍
回到目录 Lind.DDD项目主要面向敏捷,快速开发,领域驱动等,对于它的分层也是能合并的合并,比之前大叔的框架分层更粗糙一些,或者说更大胆一些,在开发人员使用上,可能会感觉更方便了,更益使用了,这就 ...
- Lind.DDD.ConfigConstants统一管理系统配置
回到目录 Lind.DDD.ConfigConstants属于新添加的组件,用来帮助我们安全的进行配置消息的管理,我们在开发项目时,有个感觉,你的config配置项会越来越多,越来越难以阅读,随着你引 ...
随机推荐
- UIwebView 和 H5交互详情
背景: 最近公司准备上一个只有原生登录界面 + H5网页 ,并且支持ios7.0 以上系统的混合app;这可把我难住了,原生的UI界面我可以正写反写各种style把界面搭建起来.而要这个app的难点在 ...
- 分区函数Partition By的与row_number()的用法以及与排序rank()的用法详解(获取分组(分区)中前几条记录)
partition by关键字是分析性函数的一部分,它和聚合函数不同的地方在于它能返回一个分组中的多条记录,而聚合函数一般只有一条反映统计值的记录,partition by用于给结果集分组,如果没有指 ...
- Spring学习记录(七)---表达式语言-SpEL
SpEL---Spring Expression Language:是一个支持运行时查询和操作对象图表达式语言.使用#{...}作为定界符,为bean属性动态赋值提供了便利. ①对于普通的赋值,用Sp ...
- mybatis中的#和$的区别
#相当于对数据 加上 双引号,$相当于直接显示数据 1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号.如:order by #user_id#,如果传入的值是111,那么解析成sq ...
- OpenWebGlobe-开源三维GIS初体验(附源码和演示)
1.OpenWebGlobe简介 OpenWebGlobe是一个高性能的三维引擎.可应用于可视化仿真,游戏,三维GIS,虚拟现实等领域.它使用纯javascript编写,可以运行在任何支持HTML5. ...
- 深入学习jQuery选择器系列第七篇——表单选择器
× 目录 [1]表单元素 [2]对象属性 前面的话 无论是提交还是传递数据,表单元素在动态交互页面的作用是非常重要的.jQuery专门加入了表单选择器,从而能够极其方便地获取到某个类型的表单元素 表单 ...
- JMM和happens-before原则
JMM: Java Memory Model(Java内存模型),围绕着在并发过程中如何处理可见性.原子性.有序性这三个特性而建立的模型. 可见性: JMM提供了volatile变量定义.final. ...
- IOS学习之初识KVO
什么是KVO? KVO(Key-Value Observing)键值观察,是一种通过对对象的某一个属性添加观察者,一旦这个属性值发生变化,就会通知当前观察者的一种机制. 该如何使用? 1.注册,指定被 ...
- DOM-Element类型
Element类型 Element类型用于表现XML或HTML元素,提供了对元素标签名.子节点及特性的访问.Element节点具有以下特征: nodeType的值为1 nodeName的值为元素的标签 ...
- 利用免费的Spire.XLS控件制作Excel报表
我们小组上个季度接手了一个项目其中需要实现创建excel文档的功能,寻找实现这个功能的控件的任务分配给了我,通过百度搜索我找到了一个免费的控件,它是由E-iceblue公司推出的spire.xls控件 ...