华为云云耀云服务器L实例评测|在Redis的Docker容器中安装BloomFilter 在Spring中使用Redis插件版的布隆过滤器

news2024/11/19 17:49:00

在这里插入图片描述

前言

最近华为云云耀云服务器L实例上新,也搞了一台来玩,期间遇到各种问题,在解决问题的过程中学到不少和运维相关的知识。

本篇博客介绍如何在Redis的docker容器中安装BloomFilter,并且结合spring的使用方式。

其他相关的华为云云耀云服务器L实例评测文章列表如下:

  • 初始化配置SSH连接 & 安装MySQL的docker镜像 & 安装redis以及主从搭建 & 7.2版本redis.conf配置文件

  • 安装Java8环境 & 配置环境变量 & spring项目部署 &【!】存在问题未解决

  • 部署spring项目端口开放问题的解决 & 服务器项目环境搭建MySQL,Redis,Minio…指南

  • 由于自己原因导致MySQL数据库被攻击 & MySQL的binlog日志文件的理解

  • 认识redis未授权访问漏洞 & 漏洞的部分复现 & 设置连接密码 & redis其他命令学习

  • 拉取创建canal镜像配置相关参数 & 搭建canal连接MySQL数据库 & spring项目应用canal初步

  • Docker版的Minio安装 & Springboot项目中的使用 & 结合vue进行图片的存取

文章目录

  • 前言
  • 引出
  • 一、Redis里面安装BloomFilter
    • 1.官网参考文档
    • 2.clone官网的代码
    • 3.安装一下cmake
    • 4.进行整体编译
    • 5.拷贝so文件,进行配置
    • 6.使用初步
  • 二、结合lua脚本在spring中使用
    • 1.编写lua脚本的方式
    • 2.不使用lua脚本的方式
  • 总结

引出


1.在Redis的Docker容器中安装BloomFilter;
2.在Spring中使用Redis插件版的布隆过滤器;
在这里插入图片描述

一、Redis里面安装BloomFilter

1.官网参考文档

https://redis.io/resources/modules/

在这里插入图片描述

https://redis.io/docs/data-types/probabilistic/bloom-filter/

https://github.com/RedisBloom/RedisBloom

在这里插入图片描述

2.clone官网的代码

apt-get install -y git

在这里插入图片描述

git clone --recursive https://github.com/RedisBloom/RedisBloom.git

在这里插入图片描述

3.安装一下cmake

sudo apt install cmake

在这里插入图片描述

报错,需要安装一下cmake

在这里插入图片描述

sudo apt install cmake

在这里插入图片描述

4.进行整体编译

make命令进行编译

在这里插入图片描述

编译后的so文件

在这里插入图片描述

5.拷贝so文件,进行配置

docker cp redisbloom.so redis_6379:/usr/local/etc/redis

在这里插入图片描述

loadmodule /root/Redis/RedisBloom/bin/linux-x64-release/redisbloom.so

在这里插入图片描述

查看日志

在这里插入图片描述

6.使用初步

docker exec -it redis_6379 bash

在这里插入图片描述

root@706d04b2ea4d:/data# redis-cli
127.0.0.1:6379> auth XXX
OK
127.0.0.1:6379> BF.ADD bmFilter tom123
(integer) 1
127.0.0.1:6379> BF.exists bmFilter tom123
(integer) 1
127.0.0.1:6379> BF.exists bmFilter tom124
(integer) 0
127.0.0.1:6379> 

在这里插入图片描述

其他命令

在这里插入图片描述

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

二、结合lua脚本在spring中使用

在这里插入图片描述

1.编写lua脚本的方式

127.0.0.1:6379> BF.ADD bmFilter tom123
-- lua脚本
local key1 = KEYS[1]      --key是从1开始
local argv1 = ARGV[1]      --第一个值
-- 使用redis的命令 BF.ADD
local retVal = redis.call('BF.ADD',key1,argv1)
-- 将结果返回
return retVal
    @Bean
    public RedisScript<Long> bloomFilter(){
        DefaultRedisScript redisScript = new DefaultRedisScript<>();
        redisScript.setResultType(Long.class);
        // lua脚本的位置
        redisScript.setLocation(
                new ClassPathResource("/lua/bloom-demo.lua") // 关联lua脚本
        );
        return redisScript;
    }
package com.tianju.fresh.service;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.script.DefaultRedisScript;
import org.springframework.data.redis.core.script.RedisScript;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

import static java.util.stream.Collectors.toList;

@SpringBootTest
@RunWith(SpringJUnit4ClassRunner.class)
public class BloomFilterTest {

    @Resource
    private RedisScript bloomFilter;

    @Autowired
    private StringRedisTemplate stringRedisTemplate;

    @Test
    public void testLuaBloom(){
        List<String> keys = new ArrayList<>();
        keys.add("testFilter"); // redis的bloom的key
        Object result = stringRedisTemplate.opsForValue().getOperations()
                .execute(bloomFilter, keys, "pet365");
        System.out.println("Lua脚本返回结果:"+result);
    }
}

在这里插入图片描述

2.不使用lua脚本的方式

在这里插入图片描述

package com.tianju.fresh.service;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.script.DefaultRedisScript;
import org.springframework.data.redis.core.script.RedisScript;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

import static java.util.stream.Collectors.toList;

@SpringBootTest
@RunWith(SpringJUnit4ClassRunner.class)
public class BloomFilterTest {

    @Resource
    private RedisScript bloomFilter;

    @Autowired
    private StringRedisTemplate stringRedisTemplate;

    @Test
    public void testLuaBloom2(){
        List<String> keys = new ArrayList<>();
        keys.add("helloFilter"); // redis的key
        String script = "return redis.call('BF.ADD',KEYS[1],ARGV[1])";
        Long result = stringRedisTemplate.opsForValue()
                .getOperations()
                .execute(
                        new DefaultRedisScript<>(script, Long.class),
                        keys,
                        "apple"
                );
        System.out.println("无lua脚本:"+result);
    }

    public static void main(String[] args) {
        System.out.println(Stream.of("abcd").collect(toList()));
    }
}

在这里插入图片描述


总结

1.在Redis的Docker容器中安装BloomFilter;
2.在Spring中使用Redis插件版的布隆过滤器;

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

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

相关文章

Vue中开发中Mock和总线了解以及应用

&#x1f3c5;我是默&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;在这里&#xff0c;我要推荐给大家我的专栏《Vue》。&#x1f3af;&#x1f3af; &#x1f680;无论你是编程小白&#xff0c;还是有一定基础的程序员&#xff0c;这个专栏…

[补题记录] Atcoder Beginner Contest 321(E)

URL&#xff1a;https://atcoder.jp/contests/abc321 目录 E Problem/题意 Thought/思路 Code/代码 E Problem/题意 有一颗 N 个节点的完全二叉树&#xff0c;现在给出节点 X&#xff0c;一个整数 K&#xff0c;问举例节点 X 的长度为 K 的点有多少个&#xff1f; Thoug…

25436-2010 热封型茶叶滤纸 阅读笔记

声明 本文是学习GB-T 25436-2010 热封型茶叶滤纸. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了热封型茶叶滤纸的产品分类、技术要求、试验方法、检验规则及标志、包装、运输、 贮存。 本标准适用于热封型包装机包装茶叶、咖…

LLM - Make Causal Mask 构造因果关系掩码

目录 一.引言 二.make_causal_mask 1.完整代码 2.Torch.full 3.torch.view 4.torch.masked_fill_ 5.past_key_values_length 6.Test Main 三.总结 一.引言 Causal Mask 主要用于限定模型的可视范围&#xff0c;防止模型看到未来的数据。在具体应用中&#xff0c;Caus…

中国核动力研究设计院使用 DolphinDB 替换 MySQL 实时监控仪表

随着仪表测点的大幅增多和采样频率的增加&#xff0c;中国核动力研究设计院仪控团队原本基于 MySQL 搭建的旧系统已经无法满足大量数据并发写入、实时查询和聚合计算的需求。他们在研究 DB-Engines 时序数据库榜单时了解到国内排名第一的 DolphinDB。经过测试&#xff0c;发现其…

瞄准核心因素:Boruta特征选择算法助力精准决策

一、引言 特征选择在机器学习和数据挖掘中扮演着重要的角色。通过选择最相关和最有信息量的特征&#xff0c;可以降低维度&#xff0c;减少数据复杂性&#xff0c;并提高模型的预测性能和解释能力。在实际应用中&#xff0c;特征选择有助于识别最具影响力的因素&#xff0c;提供…

【内网穿透】在Ubuntu搭建Web小游戏网站,并将其发布到公网访问

目录 前言 1. 本地环境服务搭建 2. 局域网测试访问 3. 内网穿透 3.1 ubuntu本地安装cpolar 3.2 创建隧道 3.3 测试公网访问 4. 配置固定二级子域名 4.1 保留一个二级子域名 4.2 配置二级子域名 4.3 测试访问公网固定二级子域名 前言 网&#xff1a;我们通常说的是互…

复亚智能落地江苏化工,安防巡逻无人机守牢“安全线”

化工业是国民经济的重要组成部分&#xff0c;但其生产环境和条件充满了挑战。大部分化学反应发生在高温、高压且有毒的环境中&#xff0c;而近70%的原料、中间体和终产品都带有易燃、易爆、有毒、有害以及腐蚀性的特性。在这样的情境下&#xff0c;安全生产不仅仅是一项日常任务…

leetCode 968.监控二叉树(利用状态转移+贪心)

968. 监控二叉树 - 力扣&#xff08;LeetCode&#xff09; 给定一个二叉树&#xff0c;我们在树的节点上安装摄像头。节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。计算监控树的所有节点所需的最小摄像头数量。 >>解题思路: 重要线索->题目示例中的摄…

AP5126 降压恒流 PIN对PIN替LN2566 LED汽车大灯车灯驱动芯片

产品描述 AP5126 是一款 PWM 工作模式,高效率、外 围简单、内置功率管&#xff0c;适用于 12-80V 输入的高 精度降压 LED 恒流驱动芯片。输出最大功率可达 15W&#xff0c;最大电流 1.2A。 AP5126 可实现全亮/半亮功能切换&#xff0c;通过 MODE 切换&#xff1a;全亮/半…

YZ09: VBA_Excel之读心术

【分享成果&#xff0c;随喜正能量】多要求自己&#xff0c;你会更加独立&#xff0c;少要求别人&#xff0c;你会减少失望&#xff0c;宁愿花时间去修炼 不完美的自己&#xff0c;也不要浪费时间去期待完美的别人&#xff01;。 我给VBA下的定义&#xff1a;VBA是个人小型自动…

SolidJs节点级响应性

前言 随着组件化、响应式、虚拟DOM等技术思想引领着前端开发的潮流&#xff0c;相关的技术框架大行其道&#xff0c;就以目前主流的Vue、React框架来说&#xff0c;它们都基于组件化、响应式、虚拟DOM等技术思想的实现&#xff0c;但是具有不同开发使用方式以及实现原理&#…

Elasticsearch:与多个 PDF 聊天 | LangChain Python 应用教程(免费 LLMs 和嵌入)

在本博客中&#xff0c;你将学习创建一个 LangChain 应用程序&#xff0c;以使用 ChatGPT API 和 Huggingface 语言模型与多个 PDF 文件聊天。 如上所示&#xff0c;我们在最最左边摄入 PDF 文件&#xff0c;并它们连成一起&#xff0c;并分为不同的 chunks。我们可以通过使用 …

在线商城项目EShop【ListView、adapter】

要求如下&#xff1a; 1、创建在线商城项目EShop&#xff1b; 2、修改布局文件activity_main.xml&#xff0c;使用LineaLayout和ListView创建商品列表UI&#xff1b; 3、创建列表项布局list_item.xml&#xff0c;设计UI用于显示商品图标、名称和价格信息&#xff1b; 4、创…

IT监控制度,IT监控体系如何分层

IT监控系统是指监控和管理it服务管理的软件。它涵盖了监控管理、服务台管理、问题管理和变更管理&#xff0c;旨在帮助组织更有效的运营信息系统&#xff0c;提高运营事故的响应速度。  通过建立集中监控平台&#xff0c;IT监控系统与信息系统的融合可以完成统一的展示和管理…

ICMP差错包

ICMP报文分类 Type Code 描述 查询/差错 0-Echo响应 0 Echo响应报文 查询 3-目的不可达 0 目标网络不可达报文 差错 1 目标主机不可达报文 差错 2 目标协议不可达报文 差错 3 目标端口不可达报文 差错 4 要求分段并设置DF flag标志报文 差错 5 源路由…

【从0学习Solidity】 50. 多签钱包

【从0学习Solidity】50. 多签钱包 博主简介&#xff1a;不写代码没饭吃&#xff0c;一名全栈领域的创作者&#xff0c;专注于研究互联网产品的解决方案和技术。熟悉云原生、微服务架构&#xff0c;分享一些项目实战经验以及前沿技术的见解。关注我们的主页&#xff0c;探索全栈…

Mac磁盘空间满了怎么办?Mac如何清理磁盘空间

你是不是发现你的Mac电脑存储越来越满&#xff0c;甚至操作系统本身就占了100多G的空间&#xff1f;这不仅影响了电脑的性能&#xff0c;而且也让你无法存储更多的重要文件和软件。别担心&#xff0c;今天这篇文章将告诉你如何清除多余的文件&#xff0c;让你的Mac重获新生。 一…

【kafka实战】01 3分钟在Linux上安装kafka

本节采用docker安装Kafka。采用的是bitnami的镜像。Bitnami是一个提供各种流行应用的Docker镜像和软件包的公司。采用docker的方式3分钟就可以把我们想安装的程序运行起来&#xff0c;不得不说真的很方便啊&#xff0c;好了&#xff0c;开搞。使用前提&#xff1a;Linux虚拟机&…

找不到msvcp110dll,无法继续执行代码,msvcp110dll丢失是什么意思

MSVCP110.dll是一个动态链接库文件&#xff0c;它是Microsoft Visual C 2012 Redistributable package的一部分。这个文件通常用于支持许多Microsoft Visual Studio 2012开发的应用程序。当您在运行某些程序时遇到“找不到msvcp110.dll”的错误时&#xff0c;这意味着您的计算机…