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.
Note: You can also build and load the module yourself.
docker run -p 6379:6379 --name redis-redisbloom redislabs/rebloom:latest
docker exec -it redis-redisbloom 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.
To use RedisBloom, first build its shared library by running 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
Project | Language | License | Author | URL |
---|---|---|---|---|
redisbloom-py | Python | BSD | Redis Labs | GitHub |
JReBloom | Java | BSD | Redis Labs | GitHub |
redisbloom-go | Go | BSD | Redis Labs | GitHub |
rebloom | JavaScript | MIT | Albert Team | GitHub |
phpredis-bloom | PHP | MIT | Rafa Campoy | GitHub |
phpRebloom | PHP | MIT | Alessandro Balasco | GitHub |
StackExchange.Redis (extensions) | .NET | MIT | StackExchange | GitHub |
Documentation and full command reference at redisbloom.io.
Got questions? Feel free to ask at the RedisBloom mailing list.
RedisBloom is licensed under the Redis Source Available License Agreement