美文网首页
redis Redis事务&乐观锁

redis Redis事务&乐观锁

作者: dylan丶QAQ | 来源:发表于2020-09-15 22:46 被阅读0次

起因:随着项目的进一步推广,数据量的增大,直接访问mysql数据库获取数据所使用的时间越来越长,为解决当前主要矛盾,决定引入redis非关系型数据库作为缓存层,使得数据并不能直接命中数据库,减少访问数据库带来的压力,从而加快运行速度。


1. Redis事务&乐观锁

1.1. Redis事务

场景描述:

就是我们的数据操作是一个原子性的

# 看一下redis的场景
# client A                  client B
set name icoding(1)     set name icodingedu(2)
get name(3)             get name
# 这个时候数据就串了

事务需要边界

multi # 开启事务
set name icoding
get name
exec # 执行事务

discard # 回滚事务

事务执行过程中错误回退机制

  • 如果命令错误则自动回滚
  • 如果命令正确但语法错误,正确的语句都会被执行

1.2. Redis的乐观锁

业务场景距离

库存:store 1000-->100 / + 1000(三个业务人员incrby)

数据的状态:如果在你修改前已经被修改了,就不能再修改成功了?

# watch key1 key2 命令
# 只要在事务外watch了一个key或多个key,在事务还没有执行完毕的时候,watch其中的key被修改后,整个事务回滚
set store 10
watch store
multi
incrby store 100
get store
exec
  • watch在事务执行完毕后就释放了
  • watch的key如果在事务执行过程中失效了,事务也不受watch影响
  • watch只能在事务外执行
  • 客户端如果断开,watch也就失效了

事务执行过程中错误回退机制

  • 如果命令错误则自动回退
  • 如果命令正确但语法错误,正确的语句会被执行

不要以为每天把功能完成了就行了,这种思想是要不得的,互勉~!

相关文章

  • 知识点整理

    redis redis为什么高效,及应用场景 锁 死锁产生条件,及避免死锁 悲观锁与乐观锁 数据库 事务 事务特性...

  • redis Redis事务&乐观锁

    起因:随着项目的进一步推广,数据量的增大,直接访问mysql数据库获取数据所使用的时间越来越长,为解决当前主要矛盾...

  • redis-事务

    简述:  redis 通过 multi 事务开始 exec 执行 watch 乐观锁 discard 取消事务等命...

  • 秒杀随笔

    方法: mysql悲观锁 mysql乐观锁 PHP+redis分布式锁 PHP+redis乐观锁(redis wa...

  • Redis事务(乐观锁)

    一、什么是事务事务是指一系列操作步骤,这一系列的操作步骤,要么完全地执行,要么完全地不执行。 比如微博中:A用户关...

  • redis事务,乐观锁

    一.Redis事务介绍 Redis单条命令是保证原子性的(要么一起成功,要么一起失败),但是事务不保证原子性 Re...

  • Redis实现分布式锁

    之前总结过一篇利用Redis的事务特性和Watch实现CAS乐观锁的Case,除了用事务和Watch实现锁还有更简...

  • Redis实现CAS的乐观锁

    Redis实现CAS的乐观锁

  • Redis 笔记(十一)-事务及 redis 乐观锁

    事务隔离原则atomicity:原子性(要么全部执行,要么全都不执行)consistency:一致性isolati...

  • Redis事务锁CAS实现以及深入误区

    Redis中的事务 Redis的事务没有mysql那么的丰富,但在JAVA web的开发过程中利用mysql事务锁...

网友评论

      本文标题:redis Redis事务&乐观锁

      本文链接:https://www.haomeiwen.com/subject/vepqyktx.html