• redis入门常用的命令操作(总结 一)


    一、使用方式

        (1) 正常执行

        (2) 放弃事务

        (3) 全体连坐

        (4) 冤头债主

     (5)watch监控

    二、常见命令:

    DISCARD:    取消事务,放弃执⾏事务块内所有的命令

     EXEC:           执⾏所有事务块内的命令

    MULTI:           标记⼀个事务块的开始

    UNWATCH:    取消WATCH命令对所有key的监视

    WATCH  key  [key .....]:     监视⼀个或多个key.如果在事务执⾏之前这些key被其他命令所改动.那么事务将被打断

    正常执⾏-例⼦:

    1、 开始⼀个事务:MULTI

    2、 添加三条数据:

          set k1 v1
          set k2 v2
          set k3 v3

    3、提交事务 :EXEC

    放弃事务-例⼦:
    当我们在做⼀系统操作时,突然发现前⾯某⼀个指令有问题,不想把这些指令提交时可以通过 DISCARD 放
    弃执⾏开启事务后的这些指令
    1、 开始⼀个事务: MULTI
    2、 修改⼀条数据:set  k1  123
    3 、此时我们不想修改 k1的值了.我们可以取消事务的提交:DISCARD

    全体连坐-例⼦:
    当我们在进⾏⼀系统命令提交的时候,如果其中某⼀个命令出错没有成功执⾏.那么本批次的命令全部放弃.
    1 开始⼀个事务: MULTI


    2、 执⾏⼀些指令:
    # 其中第四条指令是错误指令,⽆法执⾏.
    set k1 v1
    set k2 v2
    set k3 v3
    asdfasdf
    set k4 v4
    set k5 v5


    3 、提交事务: EXEC


    4 、结果:本次执⾏的指令⼀个也不会成功.原因因为第四条指令执⾏失败.导致全体连坐

     

    冤头债主-例⼦:
    1 开始⼀个事务:MULTI

    2 执⾏⼀些指令:
    INCR k1
    set k4 v4
    set k5 v5

    显然,k1的 value 是 v1,所以他是不能够做加1运算的.但是这条指令没有问题.错的是在执⾏的时候会出错.
    不像全体连错⾥⾯的命令压根就是错误的.


    3 提交事务: EXEC

    4 、结果 : 这⾥的结果我们看⻅.只有第⼀条执⾏失败了.其余两条都成功了.这的意思就是如果命令没有错.
    因为数据问题导致的错误.那么谁错的就是谁的.不会造成连坐

     

    watch监控
    悲观锁,乐观锁,CAS(check and set)
    悲观锁: 表锁,⼀⼈操作.多⼈排队,⾼并发性能差.
    乐观锁:  当多⼈前后短时间内操作同⼀条数据时.给操作⾏数据⼀个version.某⼈修改的时候确定是否还
                 是他最开始要修改的那个版本数据,如果不是.那么需要重新进⾏GET新数据并修改.
    1、准备数据
    花呗额度 1000块,吃饭使⽤10块.
    花呗 : huabei
    ⽋款 : debt
    set huabei 1000
    set debt 0
    2、 操作前开启监控
    WATCH huabei
    3 、开启事务
    MULTI
    4 、消费10块,额度减⼩10块.⽋款增加10块
    DECRBY huabei 10
    INCRBY debt 10
    5、 提交事务 :exec

     

    最后总结 :

    修改数据前⼀定要进⾏数据监控.确保修改提交时与修改前是同⼀版本.
    如果提交时发现版本不同,可以通过 UNWATCH取消监控,重新监控.
    另:⼀但执⾏了 exec,那⾏之前监控锁都将被取消.
    Watch指令类似于乐观锁.事务提交时.如果Key的值已被其他客户端改变.⽐如某个list已被别的客户端
    push/pop过.整个事务队列都不会被执⾏.

    事务三阶段:开启、队列、

  • 相关阅读:
    JUC并发工具包之Semaphore
    Linux命令
    uWSGI
    数据库 MySQL 练习
    c++
    c++ 初阶
    Git
    MySQl 和 Redis
    MySQL 查询
    MySQL 命令
  • 原文地址:https://www.cnblogs.com/studygithub5208868/p/10751318.html
Copyright © 2020-2023  润新知