在Java项目中引入布隆过滤器

目录

1、具体步骤

1.1 引入Redisson依赖

1.2 配置Redis连接

 1.3 新建布隆过滤器配置类

1.4 注入使用

2、快速计算布隆过滤器占用大小


1、具体步骤

1.1 引入Redisson依赖

        首先,我们在项目的pom文件中添加 Redisson 依赖

<properties>
    <redisson.version>3.27.2</redisson.version>
</properties>

<dependency>
    <groupId>org.redisson</groupId>
    <artifactId>redisson-spring-boot-starter</artifactId>
    <version>${redisson.version}</version>
</dependency>

1.2 配置Redis连接

        在application.yaml配置文件中配置Redis 连接:

spring:
  redis:
    host: 127.0.0.1  # Redis 服务器地址
    port: 6379       # Redis 端口
    password:        # Redis 密码(如有)
    database: 0      # 使用的 Redis 数据库编号

 1.3 新建布隆过滤器配置类

        定义 RBloomFilterConfiguration 布隆过滤器配置类:

/**
 * 布隆过滤器配置类(以商品信息查询为例)
 */
@Configuration
public class RBloomFilterConfiguration {

    /**
     * 商品信息查询缓存穿透布隆过滤器
     * 用于过滤不存在的商品ID查询请求,防止缓存穿透
     */
    @Bean
    public RBloomFilter<String> productInfoQueryBloomFilter(RedissonClient redissonClient) {
        // 创建名为"productInfoQueryBloomFilter"的布隆过滤器
        RBloomFilter<String> bloomFilter = redissonClient.getBloomFilter("productInfoQueryBloomFilter");
        
        // 初始化布隆过滤器
        // 第一个参数:预计存储的商品ID数量(根据实际业务调整)
        // 第二个参数:期望的误判率(0.001表示0.1%)
        bloomFilter.tryInit(100000L, 0.001);
        
        return bloomFilter;
    }
}

1.4 注入使用

        在业务实现类上加上注解:

@RequiredArgsConstructor

        在实现类内部引入布隆过滤器:

private final RBloomFilter<String> productInfoQueryBloomFilter;

        至此,就可以在代码里使用布隆过滤器了。

2、快速计算布隆过滤器占用大小

https://krisives.github.io/bloom-calculator/https://krisives.github.io/bloom-calculator/

        我们以之前商品查询布隆过滤器的配置数据为例:count = 100000L,error = 0.001

        可以看到,Functions (k):哈希函数的数量,这里约为 9.96。Size (m):布隆过滤器的大小,这里是 1437759 比特(约 175.50KB)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值