redis事务(伪事务)及watch监控

redis事务(伪事务)及watch监控

redis事务(部分支持):
开启事务:MULTI
提交事务:EXEC
放弃提交:DISCARD
正常执行

       127.0.0.1:6379> MULTI
       OK
       127.0.0.1:6379> set k1 v1
       QUEUED
       127.0.0.1:6379> set k2 v2
       QUEUED
       127.0.0.1:6379> get k2
       QUEUED
       127.0.0.1:6379> set k3 v3
       QUEUED
       127.0.0.1:6379> EXEC
       1) OK
       2) OK
       3) "v2"
       4) OK
       127.0.0.1:6379>

放弃事务

       127.0.0.1:6379> MULTI
       OK
       127.0.0.1:6379> set k1 v1
       QUEUED
       127.0.0.1:6379> set k2 v22
       QUEUED
       127.0.0.1:6379> get k2
       QUEUED
       127.0.0.1:6379> set k3 v3
       QUEUED
       127.0.0.1:6379> DISCARD
       OK
       127.0.0.1:6379> get k2
       "v2"
       127.0.0.1:6379>

全体连坐(相当于java的编译报错:全部失败或全部成功)

       127.0.0.1:6379> MULTI
       OK
       127.0.0.1:6379> set k1 v1
       QUEUED
       127.0.0.1:6379> set k2 v2
       QUEUED
       127.0.0.1:6379> getset k3
       (error) ERR wrong number of arguments for 'getset' command
       127.0.0.1:6379> set k3 v3
       QUEUED
       127.0.0.1:6379> EXEC
       (error) EXECABORT Transaction discarded because of previous errors.
       127.0.0.1:6379>

冤头债主(运行报错)

       127.0.0.1:6379> MULTI
       OK
       127.0.0.1:6379> INCR k1
       QUEUED
       127.0.0.1:6379> set k2 v2 
       QUEUED
       127.0.0.1:6379> set k3 v3
       QUEUED
       127.0.0.1:6379> set k4 v4
       QUEUED
       127.0.0.1:6379> set k5 v5
       QUEUED
       127.0.0.1:6379> EXEC
       1) (error) ERR value is not an integer or out of range
       2) OK
       3) OK
       4) OK
       5) OK
       127.0.0.1:6379> get k5
       "v5"
       127.0.0.1:6379>

watch监控(WATCH加锁,UNWATCH解除所有key的锁):和乐观锁类似,加锁后如有修改相关key,则会报异常。
了解乐观锁(提交的版本必须大于当前的版本才能执行成功):更新数据时会判断是否有人去更新这个数据,可以使用版本号等机制。乐观锁适合多读的的应用,这样可以提高吞吐量。
了解悲观锁:每次拿数据都会上锁,其他人操作数据会block直到它拿到锁。传统关系型数据库用的比较多,比如行锁、表锁、读锁、写锁…
CAS(Check And Set)

   		   127.0.0.1:6379> set balance 1000
           OK
           127.0.0.1:6379> set debt 0
           OK
           127.0.0.1:6379> WATCH balance
           OK
           127.0.0.1:6379> MULTI
           OK
           127.0.0.1:6379> DECRBY balance 20
           QUEUED
           127.0.0.1:6379> INCRBY debt 20
           QUEUED
           127.0.0.1:6379> EXEC
           1) (integer) 980
           2) (integer) 20
           127.0.0.1:6379>

系列文章链接
redis配置文件介绍
redis启动验证及必备命令
redis字符串操作
redis之List操作
redis之Set操作
redis之Hash操作
redis之Zset操作
redis事务(伪事务)及watch监控
redis之发布订阅
redis持久化
redis主从复制

java操作redis源码

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值