码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Redis事物和锁机制


    目录

    Redis事物和锁机制

    1.基本操作

    1.1正确的示范

    1.2现在来看错误的

    2. 事物冲突

    2.1悲观锁

    2.2乐观锁

    2.3redis事物三特性


    本文是本人以前笔记,如果说是在掘金上看到的话没错,还是本人程程呀 的个人主页 - 动态 - 掘金目前只有这一个。如果有哪里不对的话欢迎各位大佬指出问题,本人是一个小白。

    上一篇文章链接为:springboot整合Redis_程程呀是小白的博客-CSDN博客,本篇是连接springboot整合Redis_程程呀是小白的博客-CSDN博客。

    如果是springboot的话请看springboot创建项目_程程呀是小白的博客-CSDN博客_springboot创建项目创建项目 ,这个是从头开始的还没有学完springboot,一起学习呀!!!!

     

    Redis事物和锁机制

    1.基本操作

    输入multi命令开始,输入的命令依次进入命令队列中,但不会执行,直到输入exec后redis会将之前的命令队列中的命令依次执行。组队的过程通过discard来放弃组队。

    1.1正确的示范

    1. 127.0.0.1:6379[2]> multi
    2. OK
    3. 127.0.0.1:6379[2](TX)> set key1 value1
    4. QUEUED
    5. 127.0.0.1:6379[2](TX)> set key value2
    6. QUEUED
    7. 127.0.0.1:6379[2](TX)> exec
    8. 1) OK
    9. 2) OK
    10. 127.0.0.1:6379[2]> multi
    11. OK
    12. 127.0.0.1:6379[2](TX)> set v1 s1
    13. QUEUED
    14. 127.0.0.1:6379[2](TX)> set v2 s2
    15. QUEUED
    16. 127.0.0.1:6379[2](TX)> discard
    17. OK
    18. 127.0.0.1:6379[2]> keys *
    19. 1) "key1"
    20. 2) "key"

    1.2现在来看错误的

    错误的有两种情况

    1. . 组队过程中某个命令出现了报告错误,执行时整个的所有队列都会被消失,代码如下

    1. 127.0.0.1:6379[2]> multi
    2. OK
    3. 127.0.0.1:6379[2](TX)> set b1 v1
    4. QUEUED
    5. 127.0.0.1:6379[2](TX)> set b2 v2
    6. QUEUED
    7. 127.0.0.1:6379[2](TX)> set b3
    8. (error) ERR wrong number of arguments for 'set' command
    9. 127.0.0.1:6379[2](TX)> exec
    10. (error) EXECABORT Transaction discarded because of previous errors.

    (2). 如果执行阶段某个命令报出错误,则只有报错的命令不会被执行,而其他的命令都

    1. 127.0.0.1:6379[2]> multi
    2. OK
    3. 127.0.0.1:6379[2](TX)> set c1 v1
    4. QUEUED
    5. 127.0.0.1:6379[2](TX)> incr c1
    6. QUEUED
    7. 127.0.0.1:6379[2](TX)> set c2 v2
    8. QUEUED
    9. 127.0.0.1:6379[2](TX)> exec
    10. 1) OK
    11. 2) (error) ERR value is not an integer or out of range
    12. 3) OK

    2. 事物冲突

    2.1悲观锁

    悲观锁,顾名思义就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次拿数据都会上锁,这样别人想拿这个数据就会block直到它拿到锁。

    2.2乐观锁

    乐关锁,就是很乐观,每次拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据可以受版本号等机制。乐观锁适用于多读的应用类型,这样可以提高吞吐量。Redis就是利用check-and set机制实现事物的。

    在执行multi之前,先执行watch key1[key2],可以监视一个(多个)key,如果在事物执行之前这个(或这些)key被其他命令所改动,那么事物将被打断

    1. 第一个
    2. 127.0.0.1:6379[2]> set balance 100
    3. OK
    4. 127.0.0.1:6379[2]> keys *
    5. 1) "balance"
    6. 127.0.0.1:6379[2]> watch balance
    7. OK
    8. 127.0.0.1:6379[2]> multi
    9. OK
    10. 127.0.0.1:6379[2](TX)> incrby balance 10
    11. QUEUED
    12. 127.0.0.1:6379[2](TX)> exec
    13. 1) (integer) 110
    1. 第二个
    2. 127.0.0.1:6379[2]> watch balance
    3. OK
    4. 127.0.0.1:6379[2]> multi
    5. OK
    6. 127.0.0.1:6379[2](TX)> incrby balance 20
    7. QUEUED
    8. 127.0.0.1:6379[2](TX)> exec
    9. (nil)

    2.3redis事物三特性

    1. 单独的隔离操作

    2. 没有隔离级别的概念

    3. 不保证原子性

     

    本文是本人以前笔记,如果说是在掘金上看到的话没错,还是本人程程呀 的个人主页 - 动态 - 掘金目前只有这一个。如果有哪里不对的话欢迎各位大佬指出问题,本人是一个小白。

    上一篇文章链接为:springboot整合Redis_程程呀是小白的博客-CSDN博客,本篇是连接springboot整合Redis_程程呀是小白的博客-CSDN博客。

    如果是springboot的话请看springboot创建项目_程程呀是小白的博客-CSDN博客_springboot创建项目创建项目 ,这个是从头开始的还没有学完springboot,一起学习呀!!!!

     

  • 相关阅读:
    桌面云涉及到的概念
    【数据结构】排序(1) ——插入排序 & 希尔排序
    java毕业生设计医院住院综合服务管理系统计算机源码+系统+mysql+调试部署+lw
    crypto:Url编码
    Excel找回打开密码过程
    【Rust日报】2022-12-04 比较 u64 与比较字符串的性能
    ClickHouse 学习之基础入门(一)
    Traefik v3.0 Docker 全面使用指南:基础篇
    了解区块链技术和智能合约开发
    oracle-wm_concat函数与LISTAGG函数(合并列值)
  • 原文地址:https://blog.csdn.net/qq_57785602/article/details/126378081
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号