Giter Club home page Giter Club logo

redisbloom's Introduction

GitHub issues CircleCI Docker Cloud Build Status codecov Total alerts

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 RedisBloom with Docker

docker run -p 6379:6379 --name redis-redisbloom redislabs/rebloom:latest

2. Use RedisBloom with redis-cli

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.

Building and Loading RedisBloom

To build RedisBloom, ensure you have the proper 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 URL
redisbloom-py Python BSD Redis GitHub
JReBloom Java BSD Redis GitHub
redisbloom-go Go BSD Redis 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
redis-modules-sdk TypeScript BSD-3-Clause Dani Tseitlin GitHub
redis-modules-java Java Apache License 2.0 dengliming 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 Agreement

redisbloom's People

Contributors

mnunberg avatar ashtul avatar gkorland avatar k-jo avatar itamarhaber avatar chayim avatar filipecosta90 avatar dvirsky avatar rafie avatar trevor211 avatar fusl avatar tomerhekmati avatar swilly22 avatar gavincastleton avatar leibale avatar casidiablo avatar amiramm avatar luoming1224 avatar kukey avatar dengliming avatar wseng avatar tedlyngmo avatar jen6 avatar simonprickett avatar petershinners avatar natoscott avatar jingjunli avatar banker avatar jeffreylovitz avatar dictcp avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.