Springboot 在 redis 中使用 BloomFilter 布隆过滤器机制

这篇具有很好参考价值的文章主要介绍了Springboot 在 redis 中使用 BloomFilter 布隆过滤器机制。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、导入SpringBoot依赖

pom.xml文件中,引入Spring Boot和Redis相关依赖

<!-- Google Guava 使用google的guava布隆过滤器实现-->
    <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>30.1-jre</version>
    </dependency>

二、配置布隆过滤器

创建一个布隆过滤器配置类BloomFilterConfig:

import com.google.common.hash.BloomFilter;
import com.google.common.hash.Funnels;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class BloomFilterConfig {

    @Bean
    public BloomFilter<String> bloomFilter() {
        return BloomFilter.create(Funnels.stringFunnel(Charset.defaultCharset()), 1000000, 0.01);
    }
}

三、实现缓存服务

创建一个BloomFilterController。使用布隆过滤器判断数据是否存在,从而避免缓存穿透:

package com.springboot3.test;

import com.google.common.hash.BloomFilter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@RestController
@Controller
public class BloomFilterController {
    @Autowired
    private BloomFilter bloomFilter;
    @Autowired
    private RedisTemplate redisTemplate;
    @GetMapping("/cache/{key}")
    public String getCacheValue(@PathVariable String key) {
        boolean result = bloomFilter.mightContain(key);
        if(result==true){
            Object obj = redisTemplate.opsForValue().get(key);
            return obj.toString();
        }
        return "Cache miss, and the key does not exist in database.";
    }

    @GetMapping("/cache/{key}/{value}")
    public String setCacheValue(@PathVariable String key, @PathVariable String value) {
        bloomFilter.put(key);
        return "Cache set successfully.";
    }

}

四、测试

向里面添加元素

Springboot 在 redis 中使用 BloomFilter 布隆过滤器机制,spring boot,redis,java 获取元素

Springboot 在 redis 中使用 BloomFilter 布隆过滤器机制,spring boot,redis,java文章来源地址https://www.toymoban.com/news/detail-648636.html

到了这里,关于Springboot 在 redis 中使用 BloomFilter 布隆过滤器机制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Redis】Redis中的布隆过滤器

    在实际开发中,会遇到很多要判断一个元素是否在某个集合中的业务场景,类似于垃圾邮件的识别,恶意IP地址的访问,缓存穿透等情况。类似于缓存穿透这种情况,有许多的解决方法,如:Redis存储Null值等,而对于垃圾邮件的识别,恶意IP地址的访问,我们也可以直接用 H

    2024年02月12日
    浏览(37)
  • redis的安装及布隆过滤器安装

    IP mysql: 172.18.12.2 ~ 12.9 redis: 172.18.12.10 ~172.18.12.19 /usr/local/software mkdir redis mkdir 6380 /usr/local/software/redis/6380 成功结果: 成功: 可以把布隆过滤器理解为bitmap结构,判断某个对象是否存在时,它可能会误判。但是布隆过滤器也不是特别不精确,只要参数设置得合理,它的精确度也可

    2024年01月21日
    浏览(38)
  • Redis 布隆过滤器的原理和实践

    布隆过滤器是一种空间效率高、误判率可控的数据结构,通常用于检索一个元素是否在一个集合中。它是由一个比特向量和多个哈希函数组成的。布隆过滤器可以用于快速检测一个元素是否存在于一个集合中,其主要优点是省内存缺点是有一定的误识别率和删除困难。 Redis

    2024年02月09日
    浏览(45)
  • Redis系列--布隆过滤器(Bloom Filter)

    在实际开发中,会遇到很多要判断一个元素是否在某个集合中的业务场景,类似于垃圾邮件的识别,恶意ip地址的访问,缓存穿透等情况。类似于缓存穿透这种情况,有许多的解决方法,如:redis存储null值等,而对于垃圾邮件的识别,恶意ip地址的访问,我们也可以直接用 H

    2024年02月09日
    浏览(41)
  • Redis系列16:聊聊布隆过滤器(原理篇)

    Redis系列1:深刻理解高性能Redis的本质 Redis系列2:数据持久化提高可用性 Redis系列3:高可用之主从架构 Redis系列4:高可用之Sentinel(哨兵模式) Redis系列5:深入分析Cluster 集群模式 追求性能极致:Redis6.0的多线程模型 追求性能极致:客户端缓存带来的革命 Redis系列8:Bitmap实现

    2024年02月08日
    浏览(43)
  • Redis之布隆过滤器(Bloom Filter)解读

    目录 引进前言 隆过滤器定义 隆过滤器原理  布隆过滤器优缺点 布隆过滤器的使用场景 布谷鸟过滤器(了解)  引进前言 在实际开发中,会遇到很多要 判断一个元素是否在某个集合中 的业务场景,类似于垃圾邮件的识别,恶意ip地址的访问,缓存穿透等情况。类似于缓存穿透

    2024年02月09日
    浏览(40)
  • Redis布隆过滤器的原理和应用场景,解决缓存穿透

    目录 一、redis 二、布隆过滤器 三、缓存穿透问题 四、布隆过滤器解决缓存穿透   Redis(Remote Dictionary Server)是一种开源的内存数据存储系统,也是一个使用键值对(Key-Value)方式的高性能数据库。Redis以其快速、灵活和丰富的数据结构而闻名,常用于缓存、队列、实时数据

    2024年02月13日
    浏览(45)
  • python使用布隆过滤器筛选数据

    它是一种独特的数据结构,用以判断:一个数据 可能存在 或 一定不存在 算法思路: 开一个指定长度的数组,将所有的元素值设为0 添加元素时,执行hash,得到多个位置下标,将数组对应位置设置为1 检查元素是否存在时,执行hash,得到多个位置下标,查看数组中对应下标

    2023年04月08日
    浏览(45)
  • 深入理解PHP+Redis实现布隆过滤器(亿级大数据处理和黑客攻防必备)

    英文名称Bloom Filter,用于判断一个元素是否在一个大数据集合中,如果检测到存在则有可能存在,如果不存在则一定不存在。 Redis官网对于布隆过滤器的说明:https://redis.io/docs/data-types/probabilistic/bloom-filter/ 防止缓存穿透:用于快速判断某个商品数据是否存在于缓存中,如果存

    2024年04月09日
    浏览(45)
  • 【SpringBoot篇】基于布隆过滤器,缓存空值,解决缓存穿透问题 (商铺查询时可用)

    缓存穿透是指在使用缓存机制时,大量的请求无法从缓存中获取到结果,导致请求都要直接访问后端存储系统,从而增加了系统的负载和响应时间。 通常的缓存机制是将请求的结果缓存在内存或其他高速存储介质中,当相同的请求再次到达时,可以直接从缓存中获取结果,避

    2024年02月04日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包