Redis学习笔记~Redis事务机制与Lind.DDD.Repositories.Redis事务机制的实现
Redis本身支持事务,这就是SQL数据库有Transaction一样,而Redis的驱动也支持事务,这在ServiceStack.Redis就有所体现,它也是目前最受业界认可的Redis驱动,而它将Redis的事务机制(MULTI
,Exec,Watch等)封装成了比较友好的实现方式,如下面的代码
using (IRedisClient RClient = prcm.GetClient())
{
using (IRedisTransaction IRT = RClient.CreateTransaction())
{
IRT.QueueCommand(r => r.AddItemToList("zzl", "2"));
IRT.QueueCommand(r => r.AddItemToList("lr", "2")); IRT.Commit(); // 提交事务
} }
当然上面漂亮的代码有一些功劳要归于C#漂亮的语法,你在JAVA里可以很难写出如此漂亮的东西,当然上面的代码是ServiceStack.Redis为我们封装的,平时我们可以直接使用,现在再说一下大叔Lind.DDD框架里的RedisRepository对它的支持!
如果大叔RedisRepository想支持redis事务,前提:仓储的IRedisClient必须与产生事务的IRedisClient是同一个对象,否则redis事务在大叔框架里不会起作用
实现方法:
一 RedisRepository<T>实现SetDataContext方法,将IRedisClient从外面传入,这样可以保存事务的和仓储的用的是一个对象
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类型");
} }
二 添加基于Redis的事务管理者,让大叔仓储与事务更好的结合,方便开发人员的使用
/// <summary>
/// Redis事务管理机制
/// </summary>
public class RedisTransactionManager
{
/// <summary>
/// 事务块处理
/// </summary>
/// <param name="redisClient">当前redis库</param>
/// <param name="action">事务中的动作</param>
public static void Transaction(IRedisClient redisClient, Action action)
{
using (IRedisTransaction IRT = redisClient.CreateTransaction())
{
try
{
action();
IRT.Commit();
}
catch (Exception)
{
IRT.Rollback();
}
}
} }
三 在领域代码中,我们通常可以这样使用大叔redis的事务块,看代码
var redis = new Lind.DDD.Repositories.Redis.RedisRepository<User>();
IRedisClient redisClient = Lind.DDD.RedisClient.RedisManager.GetClient();
redis.SetDataContext(redisClient);
Lind.DDD.RedisClient.RedisTransactionManager.Transaction(redisClient, () =>
{
redis.Insert(new User { UserName = "gogod111" });
redis.Insert(new User { UserName = "gogod211" });
});
这样,大叔框架就支持了Redis的事务,希望MongoDB早日也能对事务进行支持,到那时,大叔将会为它提供一种实现机制,呵呵!
aaarticlea/png;base64,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" alt="" />
下面是大叔对分布式多数据源事务的测试,可以实现SQLSERVER与Redis的事务共存机制,下面是代码
Lind.DDD.RedisClient.RedisTransactionManager.Transaction(redisClient, () =>
{
redis.Insert(new User { UserName = "gogod111" });
redis.Insert(new User { UserName = "gogod211" }); using (var trans = new TransactionScope())
{
userRepository.Insert(new UserInfo { UserName = "zzl3" });
trans.Complete();
}
});
上面代码我们还能进行一些封装,一些修改,让它支持redis和sql两种事务,使用.net4.5的默认参数,可以省去一个方法的重载,代码又便得越来越简洁了!
/// <summary>
/// 事务块处理
/// </summary>
/// <param name="redisClient">当前redis库</param>
/// <param name="redisAction">Redis事务中的动作</param>
/// <param name="sqlAction">Sql事务中的动作</param>
public static void Transaction(IRedisClient redisClient, Action redisAction, Action sqlAction = null)
{
using (IRedisTransaction IRT = redisClient.CreateTransaction())
{
try
{
redisAction();
if (sqlAction != null)
{
using (var trans = new TransactionScope())
{
sqlAction();
trans.Complete();
}
}
IRT.Commit();
}
catch (Exception)
{
IRT.Rollback();
}
}
}
代码在调用时,我们很方便,简单!
Lind.DDD.RedisClient.RedisTransactionManager.Transaction(redisClient, () =>
{
redis.Insert(new User { UserName = "gogod111" });
redis.Insert(new User { UserName = "gogod211" });
}, () =>
{
userRepository.Insert(new UserInfo { UserName = "zzl3" });
});
对于C#代码团队的不段进步,也是我们这些程序员喜爱它的原因之一,毕竟人都有个腻的时候,多多改善,对自己,对他人都是件不错好事!
Redis学习笔记~Redis事务机制与Lind.DDD.Repositories.Redis事务机制的实现的更多相关文章
- Lind.DDD.Repositories.Redis层介绍
回到目录 之前已经发生了 大叔之前介绍过关于redis的文章,有缓存,队列,分布式pub/sub,数据集缓存以及仓储redis的实现等等,而今天在Lind.DDD的持久化组件里,redis当然也有一席 ...
- Redis学习笔记(1)- CentOS 6.4 安装Redis
Redis学习笔记(1)- CentOS 6.4 安装Redis 2013.10.13 学习环境 vm 10.1 + 默认.新装的干净 CentOS 6.4 64BIT系统 准备 1 ...
- Redis学习笔记(一) ---- Linux系统中部署Redis存储系统
Redis 一.Redis简介 1.Redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合 ...
- Redis 学习笔记3:Jedis 连接虚拟机下的Redis 服务
Jedis 是 Redis 官方首选的 Java 客户端开发包. 虚拟机的IP地址是192.168.8.88. Jedis代码是放在windows上的,启动虚拟机上的Redis服务之后,用Jedis连 ...
- Redis 学习笔记1:CentOS 6.7下安装Redis
在linux环境搭建Redis环境,首先从官网(http://redis.io/)下载Redis 版本,本人使用的3.21版本. 1. 将redis 解压到 /usr/local目录下. [root ...
- Redis学习笔记~目录
回到占占推荐博客索引 百度百科 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合). ...
- Redis 学习笔记4: Redis 3.2.1 集群搭建
在CenOS 6.7 linux环境下搭建Redis 集群环境 1.下载最新的Redis版本 本人下载的Redis版本是3.2.1版本,下载之后,解压,编译(make): 具体操作可以参考我的博文:R ...
- Redis学习笔记八:集群模式
作者:Grey 原文地址:Redis学习笔记八:集群模式 前面提到的Redis学习笔记七:主从复制和哨兵只能解决Redis的单点压力大和单点故障问题,接下来要讲的Redis Cluster模式,主要是 ...
- Redis学习笔记之ABC
Redis学习笔记之ABC Redis命令速查 官方帮助文档 中文版本1 中文版本2(反应速度比较慢) 基本操作 字符串操作 set key value get key 哈希 HMSET user:1 ...
随机推荐
- WCF学习之旅—WCF4.0中的简化配置功能(十五)
六 WCF4.0中的简化配置功能 WCF4.0为了简化服务配置,提供了默认的终结点.绑定和服务行为.也就是说,在开发WCF服务程序的时候,即使我们不提供显示的 服务终结点,WCF框架也能为我们的服务提 ...
- Enterprise Solution 生成实体数据访问接口与实现类型 Code Smith 6.5 模板文件下载
数据库表定义为SalesOrder,用LLBL Gen Pro生成的实体定义是SalesOrderEntity,再用Code Smith生成的数据读写接口是ISalesOrderManager,最后是 ...
- 大三作品:不需要售货员的超市? Easy-Shopping超市导购系统
本来么,逛超市是一件很爽的事情,拉上父母孩子,推个大推车,一边聊一边买,然后开开心心的回家去. 可到了旺季,逛超市可就麻烦了,买东西人挤人,到结算的地方人山人海,一刷卡,我去,怎么这个卫生纸这么贵!这 ...
- 3、C#核心编程结构下
本学习主要参考Andrew Troelsen的C#与.NET4高级程序设计,这小节主要述说以下几个东西: 这一小节是上一小节的补充,主要涉及到一下的知识细节: 1.C#方法的各种细节 2.探讨out ...
- DotNet生成随机数的一些方法
在项目开发中,一般都会使用到“随机数”,但是在DotNet中的随机数并非真正的随机数,可在一些情况下生成重复的数字,现在总结一下在项目中生成随机数的方法. 1.随机布尔值: /// <summa ...
- Python(五)模块
本章内容: 模块介绍 time & datetime random os sys json & picle hashlib XML requests ConfigParser logg ...
- GO语言下载、安装、配置
一.Go语言下载 go语言官方下载地址:https://golang.org/dl/ 找到适合你系统的版本下载,本人下载的是windows版本.也可以下载Source自己更深层次研究go语言. 二.G ...
- Asp.Net Core 项目实战之权限管理系统(3) 通过EntityFramework Core使用PostgreSQL
0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...
- .Net语言 APP开发平台——Smobiler学习日志:如何实现离线声音文件上传
最前面的话:Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比Xamarin更方便 一.目标样式 我们要实现上图中的效果,需要如下的操作: 1.从工具栏上的"S ...
- SQL Server 中怎么查看一个字母的ascii编码或者Unicode编码
参考文章:微信公众号文章 在sql中怎么查看一个字符的ascii编码,so easy !! select ASCII('a') SELECT CHAR(97) charNum SELECT UNICO ...