分布式缓存(面试使用)

2023-10-27

一:缓存穿透

含义:缓存中取不到数据,直接透过缓存请求db。如果是恶意攻击,会使数据库崩

方案:1。对于自己系统可以根据bloom filter算法计算一个hash值,只对自己系统业务请求。如果是其他请求则过滤;

2.空值缓存;对于没有的key值数据返回空,且缓存进缓存区,设置短暂的过期时间。短时间范围内可以避免无效的攻击

二:缓存雪崩

含义:缓存数据在同一时间内失效,然后突然一些请求到db了

方案:1.随机设置缓存过期时间,不在同一时间过期

2.互斥锁

3.使用双缓存。ab

三:缓存击穿

含义:相当于微博的热门模块,缓存过期。所有请求到db。区别雪崩就是,针对某一类型的数据高并发。雪崩是大范围

方案:二级缓存,并对于不同级别的缓存设置不同的失效时间。lru算法,阿里双11,根据热度和访问次数,热度越低越淘汰

设置热点数据永不过期

 

四。mybatis缓存https://mp.weixin.qq.com/s/auovRTFk7NjJKthqrZwbMQ

1.一级缓存:sqlsession级别

excutor执行器有两个操作:baseExecutor和cachingExecutor。base界别下有三个子类默认simpleExecutor。baseExecutor的update方法,都会去清楚已有的缓存clearLocalCache();,每个sqlSession都有自己的缓存池。

2.二级缓存范围是nameSpace;当事务提交之后生效。使用cache-ref标签可以实现多个namespace共享缓存。

两个缓存机制在分布式和更新数据流程上没有使用好,都出现脏数据。可以使用第三方缓存

五。分布式缓存

1.缓存强制一致性。在sql中对于及时性高的需要强行走主库

2.延迟一致性:需要等一段时间,处理数据库数据同步

六。缓存和数据库的双写一致性

https://mp.weixin.qq.com/s/AJWkZFrawCVKsqVGgqrOqg

读请求和写请求串行化,保证同一时刻只有一个线程去完成。但是吞吐量降低。

七。redis统计独立用户访问量

1.hash:设置hset命令设置计数

2.bitset:setbit getbit bitcount

3.概率算法

八。分布式系统关注点——先写DB还是「缓存」?

https://mp.weixin.qq.com/s/MJG2MoIiJd8ZYAebIHOb_w

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

分布式缓存(面试使用) 的相关文章

  • javascript 创建对象(object)

  • javascript 中键盘快捷键(键盘事件)

    如果想要在javascript中使用快捷键 可以利用 event ctrlKey event shiftKey event altKey 来进行判断 对应的是ctrl shift 与alt 按键 事件属性可返回一个布尔值 true fals
  • Flutter 判断网络可用性

    Flutter 判断网络可用性 依赖包 dependencies connectivity 0 4 2 代码 import package connectivity connectivity dart 2019 4 18 By GX 判断网
  • LeetCode 142.环形链表II

    给定一个链表的头节点 head 返回链表开始入环的第一个节点 如果链表无环 则返回 null 如果链表中有某个节点 可以通过连续跟踪 next 指针再次到达 则链表中存在环 为了表示给定链表中的环 评测系统内部使用整数 pos 来表示链表尾
  • Nodejs+Extjs+Mongodb开发第一天 Nodejs环境搭建

    一 装备 我个人PC环境是Ubuntu14 JDK7 所以下面的步骤及问题也是基于此进行及产生的 二 Nodejs及npm的安装 这个安装的过程在网上有很多教程 这里就不详细讲了 html view plain copy print sud
  • 一篇文章了解Java虚拟机,Java虚拟机内存详解

    虚拟机介绍 Java虚拟机 JVM 一种用于计算机设备的规范 可用不同的方式 软件或硬件 加以实现 编译虚拟机的指令集与编译微处理器的指令集非常类似 Java虚拟机包括一套字节码指令集 一组寄存器 一个栈 一个垃圾回收堆和一个存储方法域 J
  • unity面板的旋转次序和万向锁

    每个unity物体在面板上都有一个rotation值 那么这个旋转的数值是怎么得出来的呢 假如一个物体xyz的rotation值都不为零 我们拉动面板上的数值会有这样的发现 拉动y值时物体绕世界坐标的y轴也就是竖直方向做旋转 拉动z轴物体沿
  • php websocket 示例

    php使用websocket示例详解 一 php 中处理 websocket WebSocket 连接是由客户端主动发起的 所以一切要从客户端出发 第一步是要解析拿到客户端发过来的 Sec WebSocket Key 字符串 复制代码代码如
  • 2、centos7修改最大文件数

    1 file max 系统所有进程能够打开的文件数 查看当前值 cat proc sys fs file max 修改值 file max的值要大于nr open 如果不修改nr open 那么file max至少要大于1024 1024
  • springboot启动报错:Unable to start web server; nested exception is org.springframework................

    Spring Boot启动出现错误 错误内容大概的意思是 未能加载嵌入的供web应用加载的空间 是因为缺少ServletWebServerFactory bean 解决方法 添加注释 EnableAutoConfiguration
  • inline-block布局与float布局

    1 解释一下display的几个常用的属性值 inline block inline block inline 行内元素 使元素变成行内元素 拥有行内元素的特性 即可以与其他行内元素共享一行 不会独占一行 不能更改元素的height wid
  • 掌握 Linux 调试技术

    http www ibm com developerworks cn linux sdk l debug index html ibm pcon 在 Linux 上找出并解决程序错误的主要方法 Steve Best sbest us ibm
  • 使用tkinter编写一个非常简单的获取股价程序(数据源tushare)

    使用tkinter编写一个非常简单的获取股价程序 数据源tushare 先看结果 主界面 获取股票信息 为更新信息按钮 查询股票信息 为功能按钮 查询股票信息界面 点击查询后 输入起始终止时间 可以查看对应的价格 并绘制K线图 价格 K线图
  • mysql5.7免安装版本

    安装环境 Win10 64位 软件版本 MySQL 5 7 16 解压版 一 下载 点开下面的链接 链接 下载地址 B站安装视频地址 链接 安装视频地址 选择选择和自己系统位数相对应的版本点击右边的Download 此时会进到另一个页面 同

随机推荐

  • 怎么制作睡袋rust_【手工课堂第二十三期】宝宝睡袋DIY

    作者 宝宝知道 依米Yimi 大家好 又到我的手工课堂咯 我是依米 热爱手工 有时间必手工 这一期给大家带来宝宝睡觉必备神器 仿踢睡袋 宝宝睡觉前 穿着睡袋来个bedtime story 睡前故事 真是极好的 睡袋是很多宝妈会选择的睡眠小物
  • 使用hiredis 实现异步设置发布订阅模式

    通过libevent实现订阅的回调事件 发布端代码如下 include
  • Unity3d 引擎原理详细介绍、Unity3D引擎架构设计

    体系结构 为了更好地理解游戏的软件架构和对象模型 它获得更好的外观仅有一名Unity3D的游戏引擎和编辑器是非常有用的 它的主要原则 Unity3D 引擎 Unity3D的是一个屡获殊荣的工具 用于创建交互式3D应用程序在多个platfor
  • vscode 中如何删除空行

    在 Visual Studio Code 中 可以使用以下步骤来删除空行 打开你想要删除空行的文件 按下 Ctrl F 打开查找功能 在查找框中输入 s 点击 查找全部 按钮 这样就可以找到文件中的所有空行 选中所有空行 然后按下 Dele
  • SIM卡物理形态与引脚定义

    SIM Subscriber Identity Moudle 用户身份模块 大家并不陌生 有了它才可以进行通话服务 本篇文章介绍下SIM的基础知识与接口形态 物理规格 SIM物理规格随着设备小型化发展也是一直在减小 如下图所示 SIM卡 引
  • R语言---颜色选择和设置

    R语言颜色选择和设置 1 R base颜色版 1 1 R base颜色 1 2 R ggplot 默认颜色反转 2 R颜色包RColorBrewer 3 R颜色包wesanderson viridis ggsci 3 1 wesanders
  • spring boot (十三)整合Activiti工作流(四)集成Diagram Viewer跟踪流程

    前言 activiti 5 22 0 一 引入依赖 如果需要用到Diagram Viewer跟踪流 那么需要引入下面的依赖
  • 怎样安装VLC到CentOS7

    第一步 安装Epel Release 及Nux Repository 打开终端 输入命令 1 yum y install epel release 2 rpm Uvh http li nux ro download nux dextop e
  • 数据挖掘实例

    1 Numpy基础 1 创建数组 创建一维数组 import numpy as np a np arange 5 注 将0 1 2 3 4赋值给a这个变量 创建m n的多维数组 import numpy as np def cnmda m
  • Vue本地跨域和线上跨域如何解决?

    本地跨域是通过在vue config js 件 的devServer属性 的proxy属性配置 共配置三个属性 分别是 代理名称 代理地址 开启跨域 重写路径 可有可无 线上跨域是在nginx conf 件 配置 代理名称是通过locati
  • 解决Intel12代酷睿CPU【小核载满,大核围观】的问题(WIN11)

    文章目录 一 起因和问题 1 1 升级12代酷睿 1 2 程序运行速度堪忧 二 理论成绩旌旗招展 2 1 CPU Z 2 1 1 8P0E 2 1 2 8P8E 2 2 鲁大娘 2 2 1 8P0E 2 2 2 8P8E 2 3 其它测试软
  • 三个线程T1,T2,T3.保证顺序执行的三种方法

    第一种方式 顺序在线程中创建实例 最容易想到的办法 public class TestTwo static TestTwo t new TestTwo class T1 extends Thread Override public void
  • protobuf 2.0版本排查必填字段未填的方法

    在proto2 0版本中 如果required字段没有填写 那么proto编码字符串发给对方进行parse时 对方会parse失败 因此有必要在发送前检查一下是否存在这种情况 特别是在debug阶段 1 为了获取proto序列化的错误信息
  • shell 读取文件第几行 第几列的值

    1 问题 读取 list文件 内容如下 中 NO1 和NO2 的值 platform NO1 NO2 AIX 64 1 20 NT X64 2 21 LINUX X64 3 22 HPIA 64
  • 最详细的【基数排序】---排序算法,思路清晰动图保姆级讲解,五分钟搞懂!

    基数排序 已同步微信公众号 乐享Coding 想要一起学习的可以加群 共同交流 基本思想 将所有待比较数值统一为同样的数位长度 数位较短的数前面补零 从最低位开始 依次进行一次排序 这样从最低位排序一直到最高位排序完成以后 数列就变成一个有
  • 通用mapper的常用查询,select和selectByPrimaryKey

    通用mapper 的查询总结 1 如果是等值查询 根据其主键查询 则可以用selectByPrimaryKey 如果不是主键 而是根据其他值查询 那么用select T t T为通用mapper对应的类类型 这里传入一个该类的实例 根据改实
  • linux系统盘大小显示64Z,linux磁盘容量变为64Z

    author skate time 2012 06 05 linux磁盘容量变为64Z root localhost df h 文件系统 容量 已用 可用 已用 挂载点 dev sda3 255G 2 6G 240G 2 dev sda1
  • matlab敏感词输出代码,敏感词过滤的简易实现

    介绍 很多时候我们需要对接受的文本进行过滤 剔除一下不当用词 比如一些反动的 侮辱性的 淫秽的用语 一般会有一个敏感词词库 基于这个词库对输入的文本进行过滤 分享一种简易的实现 示例中为了和谐 将不会出现上述违反社会主义核心价值观的词汇 使
  • 免费简单的在线QQ聊天

    今天在写电商网站的时候 用JSP AJAX写聊天功能写的够蛋疼的 突然想到 有谁会在你这个网站上不知道对方上线有空回你没有整天挂着这个网站呢 比起在网站上聊天 倒不如直接在QQ上聊天 所以目标就是实现点击一个链接直接在QQ上于另外一个人链接
  • 分布式缓存(面试使用)

    一 缓存穿透 含义 缓存中取不到数据 直接透过缓存请求db 如果是恶意攻击 会使数据库崩 方案 1 对于自己系统可以根据bloom filter算法计算一个hash值 只对自己系统业务请求 如果是其他请求则过滤 2 空值缓存 对于没有的ke