redis 事务

事务是一个单独隔离操作:事务中的所有命令都会被序列化、按顺序的执行。事务在执行的过程中,不会被其他客户端发送来的命令请求打断。
事务是一个原子操作: 事务中的命令要么全部被执行,要么 全部都不执行。
EXEC 命令负责触发并执行事务中的所有命令:
如果客户端在使用MULTI 开启一个事务之后,却因为断线而没有成功执行EXEC,那么事务中的所有命令都不会被执行。
另一方面,如果客户端成功在开启事务之后执行EXEC,那么事务中的所有命令都会被执行。
MULTI命令用于开启一个事务,它总是返回OK,MULTI执行之后,客户端可以继续向服务器发送任意多条命令,这些命令不会立即被执行,而是被放入到一个队列中,当EXEC命令被调用时,所有队列中的命令才会被执行。
另一方面,通过调用DISCARD,客户端可以情况事务队列,并放弃执行事务。

重点:
在开启事务后,命令入队如果失败,事务将会自动取消。
如果事务在执行中某条命令执行失败了,其他命令仍会被执行。
一种是命令入队失败,一种是执行失败。两者是不一样的。

Redis 事务不支持回滚Rollback 但是执行 Discard 放弃事务。
执行Discard 将会使,事务队列清空!

Watch 命令很有用,可以在事务中检测某个数据。

Redis集群后,无法使用事务。

c# StackExchange.Redis 使用事务。

IDatabase db = StackExchangeRedisHelper.GetDatabase();
var tran = db.CreateTransaction(); //开启事务 相当于MULTI命令
tran.AddCondition(Condition.KeyExists("key")); //相当于watch 命令 表示 只有在存在key时才会执行事务
tran.StringSetAsync("key1","value1");	//添加指令到事务队列
tran.StringSetAsync("key2","value2");    //添加执行到事务队列
tran.Excute();		//执行事务 相当于 EXEC命令 返回值是事务是否被执行
//tran.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值