MySQL事务和Redis事务对比

MySQL事务

四大特性

  • 原子性:事务是不可分割的,同成功,同失败
  • 隔离性:多个事务之间,操作不受影响
  • 一致性:事务完成时数据状态必须保持一致
  • 持久性:事务一旦提交或回滚是不可逆的

并发事务问题

因为事务的隔离性,可能会引发一系列问题

  • 脏读:一个事务读到另一个事务没提交的数据
  • 不可重复读:事务先后读取同一条记录,两次读取数据不同
  • 幻读:一个事务查询数据时,没有对应数据行,但插入时,发现有对应数据行了,好像出现了幻影

事务隔离级别

在这里插入图片描述
性能逐渐降低,安全性逐渐升高

Redis事务

相关命令

multi  开启事务
exec 提交事务
discard 取消事务
watch 开启监控 (监控某一个key,可用来实现乐观锁)
unwatch 取消监控

在这里插入图片描述

  • 排他性:事务中所有命令串行化的执行,Redis在此期间不会对其他客户端的请求提供任何服务
  • 一次性:事务在执行一次后就没了,如果需要重新执行,需开启新的事务
  • 顺序性:redis会顺序的执行一组命令,如果有一条命令执行失败,剩下的命令依然会执行

与MySQL事务的不同

1. redis事务没有隔离级别概念

批量操作在执行exec命令前被放入队列缓存中,并没有被实际执行,也就不存在事务内的查询会被看到,事务外的看不到,从而也不会出现并发事务问题

2. redis事务不保证原子性

单条命令的执行是保证原子性的,而事务是不保证的,且没有回滚,事务中任意命令失败,其他命令仍会执行

  • List item若命令中存在类似于Java运行时异常,执行exec时,错误命令抛出异常,其他命令正常执行
  • List item若命令中存在类似于Java编译时异常,执行exec命令时,所有命令都不会执行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值