stackexchange.mysql_【转】StackExchange.Redis 事务控制和Batch批量操作

本文详细介绍了Redis的事务控制,包括multi和exec命令的使用,以及其不保证事务一致性的特点。还讨论了乐观锁的概念,并通过Watch命令展示了如何实现。在StackExchange.Redis库中,通过CreateTransaction和Execute函数实现事务,并通过CreateBatch进行批量操作以提高执行效率。
摘要由CSDN通过智能技术生成

Redis事物

Redis命令实现事务

Redis的事物包含在multi和exec(执行)或者discard(回滚)命令中

和sql事务不同的是,Redis调用Exec只是将所有的命令变成一个单元一起执行,期间不会插入其他的命令。

这种方式不保证事务的一致性,即使中间有一条命令出错了,其他命令仍然可以正常执行,并且无法回滚

下面的例子演示了一个基本的事务操作

可以看到,直到调用Exec命令时,才开始执行之前的所有命令,同时会返回两个结果,discard 命令类似,就不贴代码了。

下面模拟一个会报错的命令来看一下

我们同时将用户name和age 进行自增1操作,然而name不是数字类型,结果执行失败,但是age的自增操作仍然成功了。这无疑是个很令人不舒服的弊端,所以在写相关代码时要注意

乐观锁

前面说到通过multi命令只是保证一个事物中的所有命令可以在一起执行,显然只是实现这一点的话对于大部分的业务都是无法满足的。

所以Redis提供了Watch命令来监控一个key以达到乐观锁的效果。关于乐观锁的原理有不了解的小伙伴可以抽十分钟去科普一下

下面展示一个乐观锁实例:

65745deb7b1dd0fc77d6acbc2e279c47.png                         

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值