广告
返回顶部
首页 > 资讯 > 数据库 >Redis 布隆过滤器命令的使用详解
  • 177
分享到

Redis 布隆过滤器命令的使用详解

2024-04-02 19:04:59 177人浏览 八月长安
摘要

目录一、Docker 安装 Redis 布隆过滤器学习历史重要原因之一,就是要学会感恩,因为我们都是站在巨人的肩膀上。1.1、安装注意:1.2、测试二、RedisBloom 命令讲解2.1、命令大纲2.2、BF.ADD

因为平常使用 Docker 比较多,所以照常还是使用Docker来准备环境啦。

一、Docker 安装 Redis 布隆过滤器

Redis 本身并不支持布隆过滤器,而是采用插件的方式去安装的,以达到一种热拔插的效果。

因为我对于 liunx 来说就是一个小白,所以还是用 docker 香。

我就开始搜索如何为 docker 上的 Redis 安装布隆过滤器, 实现方式我看了看有好几种~,但是大都数都需要去下载 redis 布隆过滤器的那个模块,我觉得这样也太麻烦了,肯定有前人偷过懒了,果然有更直接的方式~

学习历史重要原因之一,就是要学会感恩,因为我们都是站在巨人的肩膀上。

Docker 上有个redislabs/rebloom的镜像,它是将redis布隆过滤器打包在一起的一个镜像,直接使用这个镜像启动的redis容器,直接就可以使用布隆过滤器~:woman:‍:computer:

1.1、安装

搜索镜像

docker search redislabs/rebloom

Redis 布隆过滤器命令的使用详解

拉取镜像

docker pull redislabs/rebloom

Redis 布隆过滤器命令的使用详解

启动镜像

docker run -d -p 6379:6379 --name myrebloom redislabs/rebloom

Redis 布隆过滤器命令的使用详解

注意:

我只是为了有个写demo的环境,所以redis未落盘,也未设置密码,用的也是默认端口,真实要用,不能这么玩,当然也没这样玩的

1.2、测试

进入容器中,我们来用redis-cli玩一玩~

docker exec -it [容器名|容器id] bash #/bin/bash 都可
 redis-cli

Redis 布隆过滤器命令的使用详解

Redis 布隆过滤器命令的使用详解

确定没啥问题,咱们来玩 Redis 的布隆过滤器

二、RedisBloom 命令讲解

2.1、命令大纲

先看看总共有哪些命令,待会咱们一条一条来尝试,均来自redis官网。

CommandDescription
BF.ADD添加一个元素到布隆过滤器
BF.EXISTS判断元素是否在布隆过滤器
BF.INFO返回有关布隆过滤器的信息
BF.INSERT将多个元素添加到过滤器。如果键不存在,它会创建一个新的过滤器。
BF.MADD添加多个元素到布隆过滤器
BF.MEXISTS判断多个元素是否在布隆过滤器
BF.RESERVE创建一个布隆过滤器。设置误判率和容量
BF.SCANDUMP开始增量保存 Bloom 过滤器。
BF.LOADCHUNK恢复之前使用BF.SCANDUMP保存的布隆过滤器。

2.2、BF.ADD 和 BF.MADD

语法格式:

BF.ADD key value 
 BF.MADD key value1 value2 ...

当key不存在的时候,会创建一个空的布隆过滤器,并会给定一个默认的误判率和含有上限容量的的子过滤器。并且通过这种方式创建出来的布隆过滤器,是能够自动缩放的。

每一次扩容,新的子过滤器是用前一个子过滤器的大小来进行扩张,默认扩张倍数为2.

BF.ADD类似于集合sadd命令,不过bf.add一次只能添加一个元素到集合中。一次性添加多个则使用bf.madd.

Redis 布隆过滤器命令的使用详解

2.3、BF.EXISTS 和 BF.MEXISTS

上面也已经用到了,它就是用来判断元素是否在布隆过滤器中

语法:

bf.exists key value
 bf.mexists key value1 value2 ...

存在返回1,不存在返回0

Redis 布隆过滤器命令的使用详解

2.4、BF.INFO

返回有关布隆过滤器的信息,

语法格式:

bf.info key

Redis 布隆过滤器命令的使用详解

Capacity #  子过滤器的上限
 (integer) 100
 Size #布隆过滤器的容量大小
 (integer) 296 
 Number of filters  #当前过滤器数量 这里应该是记录子过滤器数量吧
 (integer) 1
 Number of items inserted # 插入的值的数量
 (integer) 1
 Expansion rate #默认的扩张倍数
 (integer) 2

一个数据看不出来,多插入两条,看一下对比,大家就明白了

Redis 布隆过滤器命令的使用详解

2.5、BF.RESERVE

语法格式:

bf.reserve key error_rate capacity [EXPANSION expansion] [NONSCALING]

使用bf.reserve命令创建一个自定义的布隆过滤器。bf.reserve命令有三个参数,分别是:

key
error_rate
capacity

然后还有两个可选参数:EXPANSIONNONSCALING

1、EXPANSION:简单说它就是扩张倍数,省略则默认为2。

如果要存储在过滤器中的元素数量未知,我们建议您使用expansion2 或更多来减少子过滤器的数量。否则,我们建议您使用expansion1 来减少内存消耗。默认扩展值为 2。

2、NONSCALING:如果写了这个参数,在达到初始容量,为防止过滤器创建额外的子过滤器。过滤器在达到容量时会返回错误capacity,当让非缩放过滤器比缩放过滤器需要的内存略少。

示例:

bf.reserve nzc:redisboom1 0.01 100
 bf.reserve nzc:redisboom2 0.01 100  EXPANSION 1 
 bf.reserve nzc:redisboom3 0.01 100  NONSCALING

我把相关的信息都打印出来了,大家从所输出的信息中也能够看出它们的一些区别。

Redis 布隆过滤器命令的使用详解

Redis 布隆过滤器命令的使用详解

Redis 布隆过滤器命令的使用详解

小结:

  • 如果是预估不到数据的范围量,而且没有办法计算的增长量,那么我觉得暂定为默认的即可。
  • 如果是能够估算数据的大致范围,数据增长速度有迹可循,那么可以适当的推算一下EXPANSION这个参数该设置的大小。
  • 如果数据范围没有那么那么大,并且可以接受较大程度的误判率,那么EXPANSION设置为1会更好,能够节省内存消耗。
  • NONSCALING如果使用此参数,则是将数组大小固定了,需要考虑清楚是否适合。
  • 布隆过滤器的error_rate越小,需要的存储空间就越大,对于不需要过于精确的场景,error_rate设置稍大一点也可以。布隆过滤器的capacity设置的过大,会浪费存储空间,设置的过小,就会影响准确率,所以在使用之前一定要尽可能地精确估计好元素数量,还需要加上一定的冗余空间以避免实际元素可能会意外高出设置值很多。总之,error_ratecapacity都需要设置一个合适的数值。

2.6、BF.INSERT

语法格式

BF.INSERT key [CAPACITY capacity] [ERROR error]
   [EXPANSION expansion] [NOCREATE] [NONSCALING] ITEMS item [item...]

由中括号包裹的都是可选参数。大都数参数上面都说到了

NOCREATE指示如果过滤器不存在,则不应创建它。如果过滤器尚不存在,则返回错误而不是自动创建它。这可以用于过滤器创建和过滤器添加之间需要严格分离的地方。

示例:

BF.INSERT nzc:redisboom4  items key1 key2 key3

Redis 布隆过滤器命令的使用详解

补充:

BF.SCANDUMP # 开始布隆过滤器的增量保存。这对于无法适应法线DUMP和RESTORE模型的大型布隆过滤器很有用。
 BF.LOADCHUNK  #恢复以前使用保存的过滤器SCANDUMP。

到此这篇关于Redis布隆过滤器的相关命令的使用的文章就介绍到这了,更多相关Redis布隆过滤器内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

您可能感兴趣的文档:

--结束END--

本文标题: Redis 布隆过滤器命令的使用详解

本文链接: https://www.lsjlt.com/news/33867.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Redis 布隆过滤器命令的使用详解
    目录一、Docker 安装 Redis 布隆过滤器学习历史重要原因之一,就是要学会感恩,因为我们都是站在巨人的肩膀上。1.1、安装注意:1.2、测试二、RedisBloom 命令讲解...
    99+
    2022-11-13
  • Redis 布隆过滤器命令的使用详解
    目录一、docker 安装 Redis 布隆过滤器学习历史重要原因之一,就是要学会感恩,因为我们都是站在巨人的肩膀上。1.1、安装注意:1.2、测试二、RedisBloom 命令讲解2.1、命令大纲2.2、BF.ADD ...
    99+
    2022-08-26
  • redis如何使用布隆过滤器
    布隆过滤器2个基本指令是bf.add和bf.exists,如果想要一次添加多个,就需要用到bf.madd 指令,同样如果需要一次查询多个元素是否存在,就需要用到bf.mexists 指令,基本使用如下:127.0.0.1:6379>&...
    99+
    2022-10-21
  • redis的set get[布隆过滤器]
    ...
    99+
    2018-08-21
    redis的set get[布隆过滤器]
  • Redis处理高并发之布隆过滤器详解
    目录前言缓存穿透、击穿、雪崩缓存穿透出现情况常见的解决方案缓存击穿出现情况解决方案缓存雪崩解决方案布隆过滤器 Bloom filter总结前言 随着我们业务开发越来越来大,并染请求...
    99+
    2022-12-29
    Redis布隆过滤器处理高并发 Redis高并发处理
  • Redis 中布隆过滤器的实现
    Redis 中布隆过滤器的实现?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。什么是『布隆过滤器』布隆过滤器是一个神奇的数据结构,可以用来判断一...
    99+
    2022-10-18
  • 详解SpringBoot中如何使用布隆过滤器
    目录前言一、Guava 实现布隆过滤器二、Hutool 布隆过滤器三、Redission 布隆过滤器四、小结五、Guava 布隆过滤器结合 Redis 使用昨天写了一篇Redis布隆...
    99+
    2022-11-13
  • Redis中Redisson布隆过滤器的学习
    目录简介使用Demo依赖测试代码简析初始化添加元素检索元素简介 本文基于Spring Boot 2.6.6、redisson 3.16.0简单分析Redisson布隆过滤器的使用。 ...
    99+
    2022-11-13
  • Redis中Bloomfilter布隆过滤器的学习
    目录1.概念2.guava实现2.1.依赖2.2.初始化布隆过滤器2.3.布隆过滤器2.4.添加元素或者判断是否存在3.Redisson实现3.1.依赖3.2.注入或测试1.概念 ​...
    99+
    2022-12-14
    Redis Bloom filter Redis布隆过滤器
  • Redis中的布隆过滤器和PHP的使用方法
    Redis是一个开源的内存数据库,被广泛应用于缓存、消息队列、分布式锁等场景。其中,布隆过滤器是一种高效的数据结构,可以用于判断一个元素是否存在于一个集合中,在Redis中得到了广泛的应用。本文将介绍Redis中布隆过滤器的实现原理、使用方...
    99+
    2023-05-16
    PHP redis 布隆过滤器
  • Redis中Bloom filter布隆过滤器的学习
    目录1.概念2.guava实现2.1.依赖2.2.初始化布隆过滤器2.3.布隆过滤器2.4.添加元素或者判断是否存在3.Redisson实现3.1.依赖3.2.注入或测试1.概念 ​ 布隆过滤器是一个高空间利用率的概率性...
    99+
    2022-12-14
    RedisBloomfilter Redis布隆过滤器
  • Redis中的布隆过滤器怎么实现
    这篇文章主要介绍“Redis中的布隆过滤器怎么实现”,在日常操作中,相信很多人在Redis中的布隆过滤器怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Redis中的布...
    99+
    2022-10-19
  • victoriaMetrics库布隆过滤器初始化及使用详解
    目录概述限速器的初始化总结代码路径:/lib/bloomfilter 概述 victoriaMetrics的vmstorage组件会接收上游传递过来的指标,在现实场景中,指标或瞬时指...
    99+
    2022-11-13
  • C++BloomFilter布隆过滤器应用及概念详解
    目录一、布隆过滤器概念二、布隆过滤器应用三、布隆过滤器实现1.插入2.查找3.删除四、布隆过滤器优缺五、结语一、布隆过滤器概念 布隆过滤器是由布隆(Burton Howard Blo...
    99+
    2023-03-08
    C++ BloomFilter布隆过滤器 C++ BloomFilter C++布隆过滤器
  • Java布隆过滤器怎么使用
    本文小编为大家详细介绍“Java布隆过滤器怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java布隆过滤器怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。通常你判断某个元素是否存在用的是什么?很多...
    99+
    2023-06-29
  • 什么是布隆过滤器,它在Redis中如何使用
    本篇内容介绍了“什么是布隆过滤器,它在Redis中如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2022-10-18
  • Java的布隆过滤器你了解吗
    目录BitMap布隆过滤器运用场景传统数据结构的不足实现原理误判现象实现Redis 的 bitmapRedisBloomGuava 的 BloomFilterRedisson解决缓存...
    99+
    2022-11-13
  • SpringBoot+Redis实现布隆过滤器的示例代码
    目录简述Redis 安装 Bloom Filter基本指令结合 SpingBoot方式一方式二简述 关于布隆过滤器的详细介绍,我在这里就不再赘述一遍了 我们首先知道:BloomFil...
    99+
    2022-11-13
  • Redis使用元素删除的布隆过滤器来解决缓存穿透问题
    目录前言缓存雪崩解决方案缓存击穿解决方案 缓存穿透解决方案布隆过滤器(Bloom Filter)什么是布隆过滤器位图(Bitmap)哈希碰撞布隆过滤器的2大特点fpp布隆过...
    99+
    2022-11-12
  • Redis布隆过滤器大小的算法公式是什么
    今天小编给大家分享一下Redis布隆过滤器大小的算法公式是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1. 简介客户端...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作