redis:事务与锁
创始人
2024-02-17 16:01:08
0

事务

Redis事务是指将多条命令加入队列,一次批量执行多条命令,每条命令会按顺序执行,事务执行过程中不会受客户端传入的命令请求影响

相关命令

  • MULTI:标识一个事务的开启,即开启事务;
  • EXEC:执行事务中的所有命令,即提交;
  • DISCARD:放弃事务;和回滚不一样,Redis事务不支持回滚。
  • WATCH:监视Key改变,用于实现乐观锁。如果监视的Key的值改变,事务最终会执行失败。
  • UNWATCH:放弃监视。

Redis事务和关系型数据库的事务不太一样,它不保证原子性,也没有隔离级别的概念

当事务开启时,事务期间的命令并没有执行,而是加入队列,只有执行EXEC命令时,事务中的命令才会按照顺序一一执行,从而事务间就不会导致数据脏读、不可重复读、幻读的问题,因此就没有隔离级别

在通过EXEC执行事务时,其中命令执行失败不会影响到其他命令的执行,并没有保证同时成功和同时失败的原子操作

乐观锁:就是非常乐观,做什么事都往好处想; 对于数据库操作,就认为每次操作数据的时候都认为别的操作不会修改,所以不会加锁,而是通过一个类似于版本的字段来标识该数据是否修改过,在执行本次操作前先判断是否修改过,如果修改过就放弃本次操作重新再来;

悲观锁:就是非常悲观,做什么事都觉得不好;对于数据库操作,每次操作数据数据都会认为别的操作会修改当前数据,说以都要对其进行加锁,类似于表锁和行锁。

Redis中也有锁机制,但是它是一种乐观锁,不同于MySQL,MySQL中的锁是悲观锁

Redis中可以使用watch来监视一个目标,如果执行事务之前被监视目标发生了修改,则取消本次事务

三种方式可以取消监视

  • 事务执行之后,不管是否执行成功还好是失败,都会取消对应的监视;
  • 当监视的客户端断开连接时,也会取消监视;
  • 可以手动UNWATCH取消所有Key的监视;

相关内容

热门资讯

“要领”和“要诀”意思一样吗? “要领”和“要诀”意思一样吗?“要领”可以泛指一切事情的重点,“要诀”更具体,指一些特殊的行业或本领...
张无忌长得很好看吗?为什么在小... 张无忌长得很好看吗?为什么在小说中那么有女人缘?小说里并没有形容张无忌长得很好看,这是对他的优柔寡断...
高中生看的杂志 高中生看的杂志推荐 读者 青年文摘 意林
【满分急求】女友说我“超自恋”... 【满分急求】女友说我“超自恋”,我应该注意点什么?我跟女友处了两个月,异地恋,感情特别好,就有一点,...
推荐一本书 推荐一本书最好有以下特点引导良好的价值观通俗易懂举例型(事例型)有意思... 最好有以下特点引导良...
“旅客突然跳入股道致列车晚点”... 旅客突然跳入股道致G7545次列车晚点7月5日16时34分许,G7545次列车驶入杭州东站即将停靠2...
投资小项目加盟代理商(创业加盟... 随着社会的发展和生活水平的提高,生活的压力越来越大。朝九晚六为老板打工并不能完全满足生活条件,所以很...
30个农村办厂项目,200元创... 随着新农村的建设,国家投入了人力物力来振兴最美丽的农村。鼓励年轻人回国创业,大学毕业后到大城市工作,...
爱尔眼科上市首日市值,爱尔眼科... 国内私立眼科医院中,爱尔眼科不是最早的,但却是真正意义上最快的。数据显示,2020年第三季度扣除的非...
邱县:电商直播激活产业发展新动... 转自:邯郸日报 主播在陈村乡电商直播间展示产品。 胡文卿 摄 本报记者 李天一 ...