Redis事务

使用Redis事务
基本事务
  1. 开启事务

PIPELINE获取一个管道
使用管道MULTI命令开启事务
  1. 执行命令

设置多条需要执行的命令
command01
command02
...
  1. 提交事务

使用管道EXEC命令提交上面所有命令
基本事务存在的问题

上面的简单事务的执行流程是,在调用EXEC命令时才将所有命令提交到redis服务器执行。但是仍然无法保证在事务中读取的数据是否已被其他客户端修改。具体见下面示例

watch命令解决基本事务的问题

可以通过Redis的watch命令完善基本事务功能

redis是通过乐观锁的方式实现事务的,所以watch命令不会为数据D加锁,并不影响其他客户端读写D,所以D如果被他客户端更改,则事务失败,通过重试即可。

为什么redis使用乐观锁实现事务,mysql等关系型数据库是使用悲观锁的方式实现?

加锁是一种很有效的方式,但是如果持有锁的客户端运行很慢,其他客户端就会等待很长时间。乐观锁的方式不会让程序阻塞,程序只需要在自定义逻辑中增加重试,redis本身执行速度就很快如果使用锁的方式可能会降低效率。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值