zoukankan      html  css  js  c++  java
  • redis实现乐观锁

    redis实现乐观锁

    悲观锁:很悲观,认为什么时候都会出问题,无论做什么都会加锁

    乐观锁:很乐观,认为什么时候都不会出问题,所以不会上锁,更新数据的时候会判断是否有人修改过数据,如果没有就提交数据,反之,不提交

    redis通过watch实现监控,相当于一把锁,可以实现乐观锁操作

    127.0.0.1:6379> set money 100 # money=100
    OK
    127.0.0.1:6379> set out 0 # out=0:消费0元
    OK
    127.0.0.1:6379> watch money # 监控money
    OK
    127.0.0.1:6379> multi # 开启事务
    OK
    127.0.0.1:6379(TX)> DECRBY money 20 # money减少20,money=80
    QUEUED
    127.0.0.1:6379(TX)> INCRBY out 20 # 消费20,out=20
    QUEUED
    127.0.0.1:6379(TX)> exec # 执行事务,没有异常
    1) (integer) 80
    2) (integer) 20
    127.0.0.1:6379> 
    

    接着上面的money继续操作

    127.0.0.1:6379> watch money # 监控money
    OK
    127.0.0.1:6379> multi # 开启事务
    OK
    127.0.0.1:6379(TX)> DECRBY money 10 # money减少10,money=70
    QUEUED
    127.0.0.1:6379(TX)> INCRBY out 10 # 消费10,out=30
    QUEUED
    127.0.0.1:6379(TX)> exec # 在执行事务之前,新开一个窗口,更改money(如下),结果执行事务失败
    (nil)
    127.0.0.1:6379> 
    

    执行上面事务之前,新开一个窗口,更改money

    127.0.0.1:6379> get money
    "80"
    127.0.0.1:6379> set money 1000
    OK
    

    如果事务执行失败,就先解除监控:unwatch,获取最新值后,再次监控。

    记得快乐
  • 相关阅读:
    Algorithm --> KMP算法
    Algorithm --> 快速排序
    Algorithm --> 阶乘和因子
    Algorithm --> Dijkstra和Floyd最短路径算法
    Algorithm --> 二分图最大匹配
    Algorithm --> 邮票连续组合问题
    Algorithm --> 字母重排
    Algorithm --> 6174问题
    Algorithm --> 字符串中最长不重合子串长度
    Algorithm --> DFS和BFS
  • 原文地址:https://www.cnblogs.com/Y-wee/p/14560777.html
Copyright © 2011-2022 走看看