ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

基于Redis的Java布隆过滤器

2019-12-25 10:03:42  阅读:644  来源: 互联网

标签:Redisson Java Bloom Redis 布隆 过滤器 bloomFilter


通过在优锐课的java学习分享中,对于Redis有了更深的理解。了解如何通过Redis Java客户端Redisson在Java和Redis中使用Bloom过滤器。我们可以看到,码了很多专业的相关知识, 分享给大家参考学习。

 

布隆过滤器是一种概率数据结构,用于有效测试集合中是否存在元素。 使用Bloom筛选器可以帮助减少键/值对的昂贵磁盘查找次数。

 

使用Java编程语言,开发人员可以使用各种预先构建的Bloom过滤器数据结构,包括Google的Guava核心Java库中的“ BloomFilter类”。

 

 

 

Redis是一种开源的内存中数据结构存储,可用于实现NoSQL数据库。 但是,Java与开箱即用的Redis不兼容。

 

Java开发人员必须使用Redis Java客户端才能访问功能,例如Bloom过滤器。 在本文中,我们将讨论如何通过Redis Java客户端Redisson在Java和Redis中使用Bloom过滤器。

 

使用Redisson在Redis和Java中使用Bloom过滤器

 

Redisson是Redis的超快速,轻量级Java客户端,提供许多常见的Java对象和功能,包括Bloom过滤器。

 

以下示例代码演示了如何通过RBloomFilter接口在Redisson中使用Bloom过滤器:

 

Java

 

 1 RBloomFilter<SomeObject> bloomFilter = redisson.getBloomFilter("sample");
 2 
 3 // initialize Bloom filter with
 4 
 5 // expectedInsertions = 55000000
 6 
 7 // falseProbability = 0.03
 8 
 9 bloomFilter.tryInit(55000000L, 0.03);
10 
11 bloomFilter.add(new SomeObject("field1Value", "field2Value"));
12 
13 bloomFilter.add(new SomeObject("field5Value", "field8Value"));
14 
15 bloomFilter.contains(new SomeObject("field1Value", "field8Value"));
16 
17 bloomFilter.count();

 

 

布隆过滤器是一种概率数据结构:它们可以明确地指出元素不存在于集合中,而只能说元素可能存在于集合中。 falseProbability参数控制给定的RBloomFilter出现假阳性的可能性。

 

expectedInsertions参数定义每个元素的预期插入次数。 RBloomFilter对象最多可包含2 ^ 32位。

 

Redisson还通过RClusteredBloomFilter接口在Redis中支持分布式Bloom过滤器。 RClusteredBloomFilter的内存效率更高,可缩小所有Redis节点上使用的内存。 RClusteredBloomFilter对象最多可包含2 ^ 64位。 请注意,RClusteredBloomFilter仅在Redisson的集群模式下可用。

 

以下示例代码演示了如何使用RClusteredBloomFilter接口:

 

Java

 

 1  RClusteredBloomFilter<SomeObject> bloomFilter = redisson.getClusteredBloomFilter("sample");
 2 
 3 // initialize Bloom filter with
 4 
 5 // expectedInsertions = 255000000
 6 
 7 // falseProbability = 0.03
 8 
 9 
10 bloomFilter.tryInit(255000000L, 0.03)
11 
12 
13 bloomFilter.add(new SomeObject("field1Value", "field2Value"));
14 
15 
16 bloomFilter.add(new SomeObject("field5Value", "field8Value"));
17 
18 
19 bloomFilter.contains(new SomeObject("field1Value", "field8Value"));

 

 

 

 

文章写道这里,如有 不足之处,欢迎补充评论。

关注我,和你一起细说架构那些事。优锐课

 

标签:Redisson,Java,Bloom,Redis,布隆,过滤器,bloomFilter
来源: https://www.cnblogs.com/youruike1/p/12095086.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有