Redis之缓存穿透?怎么解决?

面试官:什么是缓存穿透?怎么解决?

候选人:嗯~ ,缓存穿透是指查询一个一定不存在的数据。如果从DB查不到数据则不写入缓存,这将导致每次访问这个不存在的数据都要到DB去查询,高并发情况下DB可能会挂掉。这就是缓存穿透。

解决方案,我们通常使用布隆过滤器来解决它。

发生场景:1误删了redis和DB中数据,但前端还存在,访问时查不到

                  2恶意攻击,有人故意利用不存在的key发送大量请求

面试官:你能介绍下布隆过滤器吗?

候选人:嗯,是这样~

布隆过滤器主要是用来检索一个元素是否在一个集合中。我们当时使用的是redisson实现的布隆过滤器。

首先它底层使用了bitmap数据结构(位图),其实就是一个二进制数组,初始元素都为0。当我们存一个key时,会经过3次hash计算,(模于数组长度)找到对应数组下标,再把数组中0改为1,这样的话,三个数组位置就能标明一个key的存在。查询某个key是否存在的过程也一样。

缺点:布隆过滤器会存在误判情况,数组长度越长,误判率越低。一般我们会设置这个误判率不超过5%。有一点声明一下:布隆过滤器可以确定某个key一定不存在,但不能确定某个key一定存在。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1849.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安泰电子:ATA-ML100水声功率放大器模块技术参数

随着人类对海洋的深度探索和利用的不断加深,水下通信技术日益成为研究的热点。水下通信技术是指在海洋、湖泊等水体中实现信息传递和交流的技术手段。它不仅在海洋资源勘探、海洋环境监测等领域具有广泛应用,还在水下考古、水下工程等领域发挥着重要作用…

【UniApp开发小程序】项目创建+整合UI组件(FirstUI和uView)

创建项目 下图为初始化的项目的文件结构 引入组件 俗话说:“工欲善其事,必先利其器”,为了更加方便地开发出页面较为美观的小程序,我们先引入成熟的UI组件,再开始开发之旅。(如果你是前端高手&#xff0…

cancel框架同步mysql数据到kafka

1、下载cancel https://github.com/alibaba/canal/releases/tag/canal-1.1.52、修改conf文件夹下的canal.properties配置文件 canal.zkServerslocalhost:2181 canal.serverMode kafka ################################################## ######### Kafka ##…

移动端深度学习部署:TFlite

1.TFlite介绍 (1)TFlite概念 tflite是谷歌自己的一个轻量级推理库。主要用于移动端。 tflite使用的思路主要是从预训练的模型转换为tflite模型文件,拿到移动端部署。 tflite的源模型可以来自tensorflow的saved model或者frozen model,也可…

MotionBert论文解读及详细复现教程

MotionBert:统一视角学习人体运动表示 通过学习人体运动表征,论文原作者提出了处理以人为中心的视频任务的统一方法。使用双流时空transformer(DSTformer)网络实现运动编码器,能够全面、自适应地捕获骨骼关节之间的远…

Web项目如何做单元测试

你可能会用单元测试框架,python的unittest、pytest,Java的Junit、testNG等。 那么你会做单元测试么!当然了,这有什么难的? test_demo.py def inc(x):return x 1def test_answer():assert inc(3) 4inc() 是定义的一…

在php中安装php_xlswriter扩展报错,找不到php_xlswriter.dll

前言:这里已经把下载的php_xlswriter.dll扩展放到了php安装目录的ext目录下,运行php -m还是报错找不到该扩展 原因:下载的扩展是nts的,而安装的php是ts的。查看当前php是nts还是ts: 在PHP中,可以利用phpin…

在线乞讨系统 Docker一键部署

begger乞讨网 在线乞讨 全球要饭系统前端界面后端界面H2 数据库 console运行命令访问信息支付平台 在线乞讨 全球要饭系统 在线乞讨全球要饭项目,支持docker一键部署,支持企业微信通知,支持文案编辑 前端界面 后端界面 H2 数据库 console 运行命令 项…

TCP/IP网络编程 第十六章:关于IO流分离的其他内容

分离I/O流 两次I/O流分离 我们之前通过2种方法分离过IO流,第一种是第十章的“TCPI/O过程(Routine)分离”。这种方法通过调用fork函数复制出1个文件描述符,以区分输入和输出中使用的文件描述符。虽然文件描述符本身不会根据输入和输…

2023-07-17力扣每日一题

链接: 415. 字符串相加 题意: 给两个非负整数字符串,要求不使用用于处理大整数的库 解: 简单题,反正就是考查字符串处理和数学基础,冲冲冲 执行用时:0 ms, 在所有 C 提交中击败了100.00%的…

idea项目启动报错 Unsupported major.minor version 52.0和java内部版本号对照

文章目录 场景解决方案JDK版本和Java编译器内部的版本号 场景 idea项目启动报错: org/springframework/boot/SpringApplication : Unsupported major.minor version 52.0 报错很明显。java版本不对,例如有老项目jdk是1.7,但是idea配置的大多…

C++-136. 只出现一次的数字

题目来源:力扣 题目描述: 给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常…

Spring框架概述及核心设计思想

文章目录 一. Spring框架概述1. 什么是Spring框架2. 为什么要学习框架?3. Spring框架学习的难点 二. Spring核心设计思想1. 容器是什么?2. IoC是什么?3. Spring是IoC容器4. DI(依赖注入)5. DL(依赖查找&…

数据结构_进阶(1):搜索二叉树

1.内容 建议再看这节之前能对C有一定了解 二叉树在前面C的数据结构阶段时有出过,现在我们对二叉树来学习一些更复杂的类型,也为之后C学习的 map 和 set 做铺垫 1. map和set特性需要先铺垫二叉搜索树,而二叉搜索树也是一种树形结构2. 二叉搜…

pycharm的“following errors occurred on attempt to save files“解决方法

1.问题介绍 在刚下载pycharm的时候,会出现following errors occurred on attempt to save files错误。 原因是safe write问题,可以理解为权限问题。 2.解决办法 解决办法可以暴力的采取每次打开pycharm都采用管理员模式打开

Stable Diffusion生成图片参数查看与抹除

前几天分享了几张Stable Diffusion生成的艺术二维码,有同学反映不知道怎么查看图片的参数信息,还有的同学问怎么保护自己的图片生成参数不会泄露,这篇文章就来专门分享如何查看和抹除图片的参数。 查看图片的生成参数 1、打开Stable Diffus…

Ubuntu 安装 Docker

本文目录 1. 卸载旧版本 Docker2. 更新及安装工具软件2.1 更新软件包列表2.2 安装几个工具软件2.3 增加一个 docker 的官方 GPG key2.4 下载仓库文件 3. 安装 Docker3.1 再次更新系统3.2 安装 docker-ce 软件 4. 查看是否启动 Docker5. 验证是否安装成功 1. 卸载旧版本 Docker …

【iOS】—— 属性关键字及weak关键字底层原理

文章目录 先来看看常用的属性关键字有哪些:内存管理有关的的关键字:(weak,assign,strong,retain,copy)关键字weak关键字assignweak 和 assign 的区别:关键字strong&#…

React(3)

1.案例选项卡 import React, { Component } from reactexport default class App extends Component {state{tabList:[{id:1,text:"电影"},{id:2,text:"影院"},{id:3,text:"我的"}]}render() {return (<div><ul>{this.state.tabList…

【LocalSend】开源跨平台的局域网文件传输工具,支持IOS、Android、Mac、Windows、Linux

工作前提条件&#xff1a;设备使用相同的局域网。 LocalSend is a cross-platform app that enables secure communication between devices using a REST API and HTTPS encryption. Unlike other messaging apps that rely on external servers, LocalSend doesn’t require …