Skip to content

vladvildanov/RedisBloom

 
 

Repository files navigation

GitHub issues CircleCI Dockerhub codecov

RedisBloom: Probabilistic Data Structures for Redis

Forum Discord

The RedisBloom module provides four data structures: a scalable Bloom filter, a cuckoo filter, a count-min sketch, and a top-k. These data structures trade perfect accuracy for extreme memory efficiency, so they're especially useful for big data and streaming applications.

Bloom and cuckoo filters are used to determine, with a high degree of certainty, whether an element is a member of a set.

A count-min sketch is generally used to determine the frequency of events in a stream. You can query the count-min sketch get an estimate of the frequency of any given event.

A top-k maintains a list of k most frequently seen items.

Quick Start Guide

  1. Launch RedisBloom with Docker
  2. Use RedisBloom with redis-cli

Note: You can also build and load the module yourself.

1. Launch with Docker

docker run -d --name redis-stack-server -p 6379:6379 redis/redis-stack-server:latest

2. Use RedisBloom with redis-cli

docker exec -it redis/redis-stack-server bash

# redis-cli
# 127.0.0.1:6379>

Create a new bloom filter by adding a new item:

# 127.0.0.1:6379> BF.ADD newFilter foo
(integer) 1

Find out whether an item exists in the filter:

# 127.0.0.1:6379> BF.EXISTS newFilter foo
(integer) 1

In this case, 1 means that the foo is most likely in the set represented by newFilter. But recall that false positives are possible with Bloom filters.

# 127.0.0.1:6379> BF.EXISTS newFilter bar
(integer) 0

A value 0 means that bar is definitely not in the set. Bloom filters do not allow for false negatives.

Building and Loading RedisBloom

To build RedisBloom, ensure you have the proper git submodules, and afterwards run make in the project's directory.

git submodule update --init --recursive
make

If the build is successful, you'll have a shared library called redisbloom.so.

To load the library, pass its path to the loadmodule directive when starting redis-server:

$ redis-server --loadmodule /path/to/redisbloom.so

Client libraries

Project Language License Author Stars Package Comment
jedis Java MIT Redis Stars Maven
redis-py Python MIT Redis Stars pypi
node-redis Node.JS MIT Redis Stars npm
nredisstack .NET MIT Redis Stars nuget
redisbloom-go Go BSD Redis Stars GitHub
rueidis Go Apache License 2.0 Rueian Stars GitHub
rebloom JavaScript MIT Albert Team Stars GitHub
phpredis-bloom PHP MIT Rafa Campoy Stars GitHub
phpRebloom PHP MIT Alessandro Balasco Stars GitHub
vertx-redis-client Java Apache License 2.0 Eclipse Vert.x Stars GitHub
rustis Rust MIT Dahomey Technologies Stars GitHub

Documentation

Documentation and full command reference at redisbloom.io.

Mailing List / Forum

Got questions? Feel free to ask at the RedisBloom mailing list.

License

RedisBloom is licensed under the Redis Source Available License 2.0 (RSALv2) or the Server Side Public License v1 (SSPLv1).

About

Probabilistic Datatypes Module for Redis

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 62.5%
  • Python 29.0%
  • Shell 4.9%
  • Makefile 3.3%
  • Dockerfile 0.3%