当前位置: 首页 > news >正文

Redis布隆过滤器原理

其实布隆过滤器本质上要解决的问题,就是防止很多没有意义的、恶意的请求穿透Redis(因为Redis中没有数据)直接打入到DB。它是Redis中的一个modules,其实可以理解为一个插件,用来拓展实现额外的功能。

可以简单理解布隆过滤器的功能:它就是记录了一份DB数据,然后请求过来,会优先通过布隆过滤器进行判断,当前请求的数据是否存在:
如果存在数据:则意味着数据库确实存在这个数据,则放行到DB中。
如果不存在数据:则意味着这个请求的数据,在数据库也是没有的,则不放行到数据库

布隆过滤器原理

布隆过滤器本身是一个算法,用来判断一个元素是否在一个集合。(因为不可能蠢到真的记录一份完整的DB数据的)
这种算法由一个二进制数组和一个Hash算法组成

误判问题:

  • 因为通过Hash算法进行计算,可能存在不同的元素计算后得到hash值相同,所以hash冲突是误判问题的本质
  • hash计算后的数据在数据组上,但不一定在数据库
  • hash计算后的数据不在数组上,就一定不在数据库

所以说布隆过滤器,是一个概率型的算法,有一定的误差,但是它可以过滤大部分数据请求,少部分的与因为误差,进入数据库。

解决方式:

  • 增大数组容量,让Hash冲突的概率降低。
  • 增加Hash函数,多个hash函数来计算hash值,降低冲突概率
http://www.lryc.cn/news/153100.html

相关文章:

  • 写代码时候的命名规则、命名规范、命名常用词汇
  • Linux之iptables防火墙
  • 启动服务报错:Command line is too long Shorten command line for xxx or also for Spri
  • docker安装elasticsearch、kibana
  • 前端 CSS - 如何隐藏右侧的滚动条 -关于出现过多的滚动条导致界面不美观
  • 2.神经网络的实现
  • 合宙Air724UG LuatOS-Air LVGL API控件-键盘 (Keyboard)
  • pytorch深度学习实践
  • 直方图反向投影(Histogram Backprojection)
  • day32 泛型 数据结构 List
  • DW-AHB Central DMAC
  • JavaScript设计模式(四)——策略模式、代理模式、观察者模式
  • JS画布的基本使用
  • c++ set/multiset
  • 多线程与高并发——并发编程(4)
  • 设计模式之建造者模式
  • 源码编译安装opencv4.6.0,别的版本也行
  • 【MongoDB】Springboot中MongoDB简单使用
  • Python 面试:单元测试unit testing 使用pytest
  • 螺旋矩阵、旋转矩阵、矩阵Z字打印
  • Seaborn绘制热力图的子图
  • C++二级题目4
  • Tomcat 部署时 war 和 war exploded区别
  • Delphi IdTcpServer IdTcpClient 传输简单文本
  • 界面控件Telerik UI for WPF——Windows 11主题精简模式提升应用体验
  • PoseC3D 基于人体姿态的动作识别新范式
  • html2canvas 截图空白 或出现toDataURL‘ on ‘HTMLCanvasElement或img标签没截下来 的所有解决办法
  • Eclipse错误提示: Symbol ‘xxxx‘ could not be resolved
  • 基于Java的OA办公管理系统,Spring Boot框架,vue技术,mysql数据库,前台+后台,完美运行,有一万一千字论文。
  • 正则表达式(JAVA)