码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 谷粒商城-2


     11、缓存和分布式锁、缓存击穿、缓存雪崩、缓存穿透--超级重要

    下载RedisDesktopManager,看redis的数据

    29d4be0bc1d0484a8e875557bb205a2b.png

    943f81e5f5fb448d8d56ca86dc9a7fac.png

     b329658f1c5a4acebdc049955fcbfa16.png

    坑:

    e8e1362e34f04235af8148665d8c74ac.png27986c2701704ec7a9244b8b5674f6b5.png 

     c851a780ab534122832b04a2a1a5b173.png

    50b877320a704fa586defec9edc9f2dc.png

    21d399af1ab54bb98185213044f4592c.png

    93606e14d2a046978dc8f62082439e9c.png

    a0eeca14c80746909b4cd0f786d6ff3b.png 具体实现,加锁和删除锁必须是原子性的,所以得一条命令执行;锁的key必须是唯一得bd747c0ad93b44889db4a1aa03793b0a.png

     具体代码实现,lua脚本是官方文档给的fabf272c5649464cb8be67da0bc781ea.png

    使用官方文档推荐的Redisson来写分布式锁,锁不会有死锁问题,锁可以自动续期,看门狗

    官网中文文档:8. 分布式锁和同步器 · redisson/redisson Wiki · GitHub

    8. 分布式锁和同步器 · redisson/redisson Wiki · GitHub

    1) 

    f92d247ab5174d4394b623bf2d85a047.png​

    2)使用程序化的配置,先使用单节点模式

    796a597227054cb9b68aaae1098f0b15.png​

    看门狗机制可以解决死锁问题,但一般项目开发,会指定锁的过期时间

    152f0c8da23f459b86bc4683c7ce7e67.png​

     读写锁:

    69d56b107d554c40b5b7728776f45d61.png​

    90fec9252b684a4ba808f1becc7ed368.png​

    闭锁:

    c3176eb15e3a415cad3d46e6661c2ca1.png​

    8bb503cf7440489c9e77849f7f4daa8c.png​

    信号量:可以用作限流

    711f53090ae042f9a60ea3aaa2c9b1b3.png​

    3e6c1e369e534141a707218a38ea8a02.png​09e979764c99456caf8ef2c9fb51cf9e.png​  2e3fee935c02425590893c6fb1fe34be.png​

    缓存一致性的解决:

    d753a1e4b40e4d289777034ff88500da.png​

    999df6dae0b74cd49c3951c874b60abe.png​

    不要过度设计,加重量的锁。

    247099230fe34c02bbb486c5173273ba.png​ 8a454e8504314934a597d4734bba22c9.png​

    最终根据电商形式,采取的方案

    a2f0e66a577c43c28c82e109d14336b1.png​

    使用SpringCache处理缓存

    42b6649539b74dfd8f505af6bf037640.png​

    2c55495b4ebe4e7c9e6df0101717f6ee.png​ce2850b3c23b4c6d86226d0f953bb302.png​ 

    bdb168502e3c44b4bd4cd8a38a6b2d7b.png​

    af7e7f3708b941f8832abe560da8f68f.png​

     自定义缓存配置

    080f3cdde820402c9c29be03a03e3f39.png​

    dbf8bf92f02142c8a7a5b98034a8e74c.png​

    8af3e32c34c3451ea8372202fc66ca6c.png​

     最终使用,使用分区删除缓存,配置不要自定义前缀,这样自定义的分区的名字就是前缀

    45be3c1228a84c7a95e46852f8b65a90.png​ 093b2533aa2c4e90b2b572b4cedbf6dc.png​

     springcache的不足:

    30699b687e6b46baa812b75aaa2e2997.png​两张图为一张

    2e23dacd35fa423081d45205c42eda03.png​ 12、异步和线程池,提供系统的吞吐量,completableFuture实现异步编排

    d5e0994cb0ce41e39bcee4008a433919.png​

    0742a6e081e9448b87e99846990c63a0.png​

    f07ab10c485b4e6e850130b94b672099.png​

    b6e086663f4646b4af6dc80d8fdd7afe.png​

    624d7a57c85a4c3985de42e57b095e01.png​

    4c99925fdc8e4e7899c454f003e769ef.png​dd480655e146498eaf969ee73f78412d.png​

     2c044760c38c41e2b6368fc8c43c5743.png​

    cc6f4e3cffc44b908fd3aa9032de0e33.png​ddd676830d1f4e64b99b589506f99db1.png​ 

    5ba28b7974bf44f0a7ed0b776e17c10b.png​

     83cf10ed9e9e44e1875e742142739b43.png​

     

     

  • 相关阅读:
    Unity 2D 游戏学习笔记(6)
    Nginx+Tomcat负载均衡、动静分离
    代码随想录训练营二刷第五十九天 | 647. 回文子串 516.最长回文子序列
    three.js相机调用reset方法复原但无法完全复原
    基于miu小波变换的人体步态数据检测和识别算法matlab仿真
    没有公网IP,怎样实现私有化部署?
    牛客《算法入门》链表(题解C++)
    2023计算机毕业设计SSM最新选题之java乡村振兴战略背景下乡村教师培训教学系统fwmvy
    统信系统UOS桌面版V20 用户手册
    [倒置字符串]
  • 原文地址:https://blog.csdn.net/yuke98727/article/details/126355466
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | 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号