Bloom Filters in Java Using Redis Last Updated : 23 Jul, 2025 Comments Improve Suggest changes Like Article Like Report Bloom filters are the in-memory data structures used in applications to test whether a key belongs to a particular set or not, it's like a Redis cache but where the Redis cache stores the entire data as it is rather than any optimization, but in Bloom filters the bitset or bitmap implementation where it provides a good memory optimization and find operation is very fast here each bit represents the presence of a particular element where each bit is hashed by different hash functions. Bloom filters are much faster and more efficient for some use cases like membership testing i.e. particular elements belong to a set or not in the memory, compared to normal Redis caching. Steps for Starting the Redis Stack to Start the Redis Bloom Server Using DockerInstall the Docker from the official website. When the server starts the code will start working Step 1: Adding the dependency on pom.xml after starting the Redis bloom server: <dependency> <groupId>com.redislabs</groupId> <artifactId>jrebloom</artifactId> <version>2.1.0</version> </dependency>Step 2: Initializing Bloom Filter Client in Java Client clientVariable = new Client(hostAddress, port, timeOut , poolSize );The parameters that can be given while initializing: host address: The server IP where the application is deployed.port: The port it is pointing to default is 6379.timeOut: The maximum time it will wait to get the response from the server.poolSize: The pool size of the Jedis pool.Basic operations performed on Redis BloomOperations Syntax Parameters Creating a Redis Bloom filter clientVariable.createFilter( name, initCapacity, errorRate) name: The name of the Bloom Filter we want to Keep initCapacity: The size of the Bloom Filter that we want to keep errorRate : It is the expected rate or probability at which it gives incorrect result for the existence of the element in the setChecking the info the Bloom filter clientVariable.info(filterName) filterName: The name of the Bloom Filter Adding the keys into the Filter clientVarible.add(filterName, key) filterName: The name of the Bloom Filter key : The element that we want to add into that particular filterChecking if it exists in the filter clientVarible.exists(filterName, key) filterName: The name of the Bloom Filter key : The element that we want to check if exists in that particular filter Deleting the bloomFilter clientVariable.delete(filterName) filterName: The name of the Bloom Filter Program of Bloom Filters in Java using RedisBelow is the implementation for Creating and Checking info Redis Bloom filter: Example 1: Java package org.geeksforgeeks; import io.rebloom.client.Client; import java.util.Map; public class Main { public static void main(String args[]) { Client bloomFilerClient = new Client("localhost", 6379,2000,20); bloomFilerClient.createFilter("premium_users",200000000,0.01); bloomFilerClient.createFilter("non_premium_users",500000000,0.01); Map<String, Object> mp_premium = bloomFilerClient.info("premium_users"); Map<String, Object> mp_non_premium = bloomFilerClient.info("non_premium_users"); System.out.println("Premium Users Filter Info : " + mp_premium.toString()); System.out.println("Non Premium Users Filter Info : " + mp_non_premium.toString()); } } Output: Below in the output we can see the Redis Bloom Filter info has created. Example 2:Below is the implementation for Adding and Checking keys into the Filter: Java package org.geeksforgeeks; import io.rebloom.client.Client; public class Main { public static void main(String[] args) { Client bloomFilerClient = new Client("localhost", 6379,2000,20); bloomFilerClient.add("premium_users","[email protected]"); bloomFilerClient.add("non_premium_users","[email protected]"); if(bloomFilerClient.exists("premium_users","[email protected]")) { System.out.println("[email protected] is a premium user"); } if(bloomFilerClient.exists("non_premium_users","[email protected]")) { System.out.println("[email protected] is not a premium user"); } } } Output : Below in the output we can see the keys added into the filter. Example 3:Below is the implementation of Deleting the bloomFilter: Java package org.geeksforgeeks; import io.rebloom.client.Client; public class Main { public static void main(String[] args) { Client bloomFilerClient = new Client("localhost", 6379,2000,20); bloomFilerClient.delete("premium_users"); if(!bloomFilerClient.exists("premium_users","[email protected]")) { System.out.println("[email protected] is no longer a premium user"); } } } Output : Below in the output we can see the bloom filter has deleted. Limitations of Bloom Filter:They may produce false positives and false negatives very rarely.Limited operations can only be performed insertion and exists (membership check whether a particular key exists or not in a particular filter).The size of the bloom filter should be pre estimated. It cannot store exact data and also, we can't retrieve. It doesn't have the feature of single key deletion in a bloomFilter. Comment More infoAdvertise with us L lokeshpotta20 Follow Improve Article Tags : Advance Java Dev Scripter Redis Dev Scripter 2024 Similar Reads Advanced Java Tutorial | Mastery in Java Programming Advanced Java typically refers to the specialized topics and advanced features of the Java programming language beyond the basics covered in Core Java. Includes concepts like Servlets, JSP (JavaServer Pages), JDBC (Java Database Connectivity), Java EE (Enterprise Edition), web services, frameworks l 13 min read Java Enterprise EditionIntroduction to Java ServletsJava Servlet is a Java program that runs on a Java-enabled web server or application server. It handles client requests, processes them and generates responses dynamically. Servlets are the backbone of many server-side Java applications due to their efficiency and scalability.Key Features:Servlets w 7 min read Life Cycle of a ServletThe entire life cycle of a Servlet is managed by the Servlet container, which uses the jakarta.servlet.Servlet interface to understand the Servlet object and manage it. So, before creating a Servlet object, let's first understand the life cycle of the Servlet object, which is actually understanding 6 min read Introduction to JSPJavaServer Pages (JSP) is a server-side technology that creates dynamic web applications. It allows developers to embed Java code directly into HTML pages and it makes web development more efficient.JSP is an advanced version of Servlets. It provides enhanced capabilities for building scalable and p 4 min read JSP ArchitectureJSP (Java Server Pages) uses a three-tier architecture with a client, web server, and database. When the client sends a request, the web server's JSP engine processes the JSP file by converting it into a servlet, compiling, and executing it. The generated HTML is sent back to the client. The followi 2 min read JSF | Java Server FacesJSF technology includes a set of APIs, which represent different UI components and helps in managing their states. These APIs further help in handling events on the UI components and validate user inputs through the UI components. JSF framework provides the flexibility of creating simple as well as 4 min read Enterprise Java Beans (EJB)Note java.beans: This package has been deprecated in Java 9 and later versions, in favor of using annotations and other modern ways of creating beans. Enterprise Java Beans (EJB) is one of the several Java APIs for standard manufacture of enterprise software. EJB is a server-side software element th 4 min read MultithreadingJava Multithreading TutorialThreads are the backbone of multithreading. We are living in the real world which in itself is caught on the web surrounded by lots of applications. With the advancement in technologies, we cannot achieve the speed required to run them simultaneously unless we introduce the concept of multi-tasking 15+ min read Java Thread ClassThread is a line of execution within a program. Each program can have multiple associated threads. Each thread has a priority which is used by the thread scheduler to determine which thread must run first. Java provides a thread class that has various method calls to manage the behavior of threads b 5 min read Java Thread Priority in MultithreadingJava being Object-Oriented works within a Multithreading environment in which the thread scheduler assigns the processor to a thread based on the priority of the thread. Whenever we create a thread in Java, it always has some priority assigned to it. Priority can either be given by JVM while creatin 4 min read Lifecycle and States of a Thread in JavaA thread in Java can exist in any one of the following states at any given time. A thread lies only in one of the shown states at any instant:New StateRunnable StateBlocked StateWaiting StateTimed Waiting StateTerminated StateThe diagram below represents various states of a thread at any instant:Lif 5 min read Java Thread Priority in MultithreadingJava being Object-Oriented works within a Multithreading environment in which the thread scheduler assigns the processor to a thread based on the priority of the thread. Whenever we create a thread in Java, it always has some priority assigned to it. Priority can either be given by JVM while creatin 4 min read Main thread in JavaJava provides built-in support for multithreaded programming. A multi-threaded program contains two or more parts that can run concurrently. Each part of such a program is called a thread, and each thread defines a separate path of execution.When a Java program starts up, one thread begins running i 4 min read Concurrencyjava.util.concurrent PackageJava Concurrency package covers concurrency, multithreading, and parallelism on the Java platform. Concurrency is the ability to run several or multi programs or applications in parallel. The backbone of Java concurrency is threads (a lightweight process, which has its own files and stacks and can a 9 min read Java.util.concurrent.Executor interface with ExamplesThe concurrent API in Java provides a feature known as an executor that initiates and controls the execution of threads. As such, an executor offers an alternative to managing threads using the thread class. At the core of an executor is the Executor interface. It refers to the objects that execute 1 min read Java.util.concurrent.ExecutorService Interface with ExamplesThe ExecutorService interface extends Executor by adding methods that help manage and control the execution of threads. It is defined in java.util.concurrent package. It defines methods that execute the threads that return results, a set of threads that determine the shutdown status. The ExecutorSer 3 min read Java Runnable Interfacejava.lang.Runnable is an interface that is to be implemented by a class whose instances are intended to be executed by a thread. There are two ways to start a new Thread - Subclass Thread and implement Runnable. There is no need to subclass a Thread when a task can be done by overriding only the run 3 min read Callable and Future in JavaIn Java, multithreading allows tasks to run concurrently, improving performance and responsiveness. Traditionally, developers used the Runnable interface to define tasks, but it has two major limitations: it cannot return a result and cannot throw checked exceptions.To overcome these, Java introduce 2 min read Difference Between Callable and Runnable in Javajava.lang.Runnable is an interface that is to be implemented by a class whose instances are intended to be executed by a thread. There are two ways to start a new Thread â Subclass Thread and implement Runnable. There is no need of sub-classing Thread when a task can be done by overriding only run() 3 min read JDBC (Java Database Connectivity)JDBC (Java Database Connectivity)JDBC is an API that helps applications to communicate with databases, it allows Java programs to connect to a database, run queries, retrieve, and manipulate data. Because of JDBC, Java applications can easily work with different relational databases like MySQL, Oracle, PostgreSQL, and more.JDBC Arc 5 min read JDBC DriversDBC drivers are software components that enable Java applications to communicate with different types of databases. Each database (like MySQL, Oracle, or PostgreSQL) requires a specific JDBC driver that translates Java JDBC calls into the database-specific protocol.The JDBC classes are contained in 4 min read Establishing JDBC Connection in JavaBefore performing any database operations, you first need to establish a connection using JDBC. This connection acts like a communication channel through which SQL queries are sent and results are received. Setting up this connection involves loading the database driver, specifying the database URL, 6 min read Types of Statements in JDBCIn Java, the Statement interface in JDBC (Java Database Connectivity) is used to create and execute SQL queries in Java applications. JDBC provides three types of statements to interact with the database:StatementPrepared StatementCallable Statement1. StatementA Statement object is used for general- 5 min read Java FrameworksIntroduction to Spring FrameworkThe Spring Framework is a lightweight Java framework widely used for building scalable, maintainable enterprise applications. It offers a comprehensive programming and configuration model for Java-based development.Benefits of Using Spring FrameworkSimplified Development: Spring reduces boilerplate 7 min read Spring - Understanding Inversion of Control with ExampleSpring IoC (Inversion of Control) Container is the core of the Spring Framework. It creates and manages objects (beans), injects dependencies and manages their life cycles. It uses Dependency Injection (DI), based on configurations from XML files, Java-based configuration, annotations or POJOs. Sinc 6 min read Introduction to Spring BootSpring is one of the most popular frameworks for building enterprise applications, but traditional Spring projects require heavy XML configuration, making them complex for beginners.Spring Boot solves this problem by providing a ready-to-use, production-grade framework on top of Spring. It eliminate 4 min read Spring - MVC FrameworkThe Spring MVC Framework follows the Model-View-Controller architectural design pattern, which works around the Front Controller, i.e., the Dispatcher Servlet. The Dispatcher Servlet handles and dispatches all incoming HTTP requests to the appropriate controller. It uses @Controller and @RequestMapp 4 min read How to Create a REST API using Java Spring Boot?Representational State Transfer (REST) is a software architectural style that defines a set of constraints for creating web services. RESTful web services allow systems to access and manipulate web resources through a uniform and predefined set of stateless operations. Unlike SOAP, which exposes its 4 min read What is Spring Data JPA?Spring Data JPA is a powerful framework that simplifies database access in Spring Boot applications by providing an abstraction layer over the Java Persistence API (JPA). It enables seamless integration with relational databases using Object-Relational Mapping (ORM), eliminating the need for boilerp 6 min read Spring - JDBC TemplateIn this article, we will discuss the Spring JDBC Template and how to configure the JDBC Template to execute queries. Spring JDBC Template provides a fluent API that improves code simplicity and readability, and the JDBC Template is used to connect to the database and execute SQL Queries. What is JDB 7 min read Spring Hibernate Configuration and Create a Table in DatabaseSpring Boot and Hibernate are a powerful combination for building scalable and efficient database-driven applications. Spring Boot simplifies application development by reducing boilerplate code, while Hibernate, a popular ORM (Object-Relational Mapping) framework, enables easy database interactions 4 min read Aspect Oriented Programming (AOP) in Spring FrameworkSpring AOP (Aspect-Oriented Programming) is a programming technique in the Spring Framework that helps separate cross-cutting concerns (like logging, security, transactions) from the main business logic. Instead of adding this logic inside every class, AOP allows you to write it once and apply it wh 3 min read Introduction to Spring Security and its FeaturesSpring Security is a powerful authentication and authorization framework used to secure Java-based web applications. It easily integrates with Spring Boot and provides advanced security mechanisms such as OAuth2, JWT-based authentication, role-based access control, and protection against common vuln 3 min read What is Spring Cloud?There are many reasons to use Spring Framework for example if you want faster development, less configuration, auto-configuration, embedded server, production-ready application, and many more. But apart from that most importantly we have ready-made support for microservices and this ready-made suppo 2 min read Introduction and Working of Struts Web FrameworkStruts is an open-source web application framework developed by Apache Software Foundation, it is used to create a web application based on servlet and JSP. It depends on the MVC (Model View Controller) framework. Struts are thoroughly useful in building J2EE (Java 2 Platform, Enterprise Edition) ap 3 min read JUnitIntroduction to JUnit 5JUnit is a Testing Framework. The Junit 5 is the latest version of the testing framework, and it has a lot of features when compared with Junit 4. JUnit 5, also known as JUnit Jupiter. It introduces several new features and improvements over its predecessor, JUnit 4, making it more powerful and flex 8 min read JUnit 5 vs JUnit 4JUnit 4 and JUnit 5 both are Java-based testing frameworks, The JUnit 5 is the advanced testing framework when compared with JUnit 4. The JUnit provides a lot of features like Annotation-based coding, parallel test execution, and other features. Difference between JUnit 5 and JUnit 4TopicJUnit 5JUni 4 min read How to Write Test Cases in Java Application using Mockito and Junit?Mockito is an open-source testing framework used for unit testing of Java applications. It plays a vital role in developing testable applications. Mockito is used to mock interfaces so that a dummy functionality can be added to a mock interface that can be used in Unit Testing. Unit Testing is a typ 4 min read Unit Testing in Spring Boot Project using Mockito and JunitSpring Boot is a Java-based framework built on top of Spring that simplifies application development with minimal configuration. Itâs ideal for creating production-ready applications quickly, thanks to features like embedded servers, auto-configuration and reduced boilerplate code.Mockito is an open 4 min read JUnit 5 - Test Suites with ExampleJUnit 5 encourages a modular approach to test creation with its test suites. These suites function as containers, bundling multiple test classes for easier management and collective execution within a single run. In this article, we will learn about JUnit 5 - Test Suites. Test SuiteIn JUnit 5, a tes 2 min read JUnit 5 â JaCoCo Code CoverageIn simple terms, code coverage means measuring the percentage of lines of code that are executed during automated tests. For example, if you have a method containing 100 lines of code and you are writing a test case for it, code coverage tells you briefly how many of those lines were actively exerci 5 min read Like