{"id":13461280,"url":"https://github.com/RedisBloom/RedisBloom","last_synced_at":"2025-03-24T22:34:28.256Z","repository":{"id":37432148,"uuid":"95147835","full_name":"RedisBloom/RedisBloom","owner":"RedisBloom","description":"Probabilistic Datatypes Module for Redis","archived":false,"fork":false,"pushed_at":"2025-03-18T12:03:55.000Z","size":2041,"stargazers_count":1698,"open_issues_count":53,"forks_count":260,"subscribers_count":38,"default_branch":"master","last_synced_at":"2025-03-21T13:12:48.615Z","etag":null,"topics":["bloom-filter","redis","redis-module","redisbloom"],"latest_commit_sha":null,"homepage":"https://redis.io/docs/stack/bloom/","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RedisBloom.png","metadata":{"files":{"readme":"README.md","changelog":"changelog","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-06-22T19:06:10.000Z","updated_at":"2025-03-20T08:59:19.000Z","dependencies_parsed_at":"2023-10-22T10:31:17.177Z","dependency_job_id":"cd07b40b-388a-4990-8db9-5d4e0005a5bd","html_url":"https://github.com/RedisBloom/RedisBloom","commit_stats":{"total_commits":706,"total_committers":64,"mean_commits":11.03125,"dds":0.7946175637393768,"last_synced_commit":"396c70f81c656ab176b38fe1dbb175f10d995069"},"previous_names":[],"tags_count":76,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RedisBloom%2FRedisBloom","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RedisBloom%2FRedisBloom/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RedisBloom%2FRedisBloom/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RedisBloom%2FRedisBloom/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RedisBloom","download_url":"https://codeload.github.com/RedisBloom/RedisBloom/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245366179,"owners_count":20603438,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bloom-filter","redis","redis-module","redisbloom"],"created_at":"2024-07-31T11:00:32.363Z","updated_at":"2025-03-24T22:34:27.920Z","avatar_url":"https://github.com/RedisBloom.png","language":"C","readme":"[![GitHub issues](https://img.shields.io/github/release/RedisLabsModules/redisbloom.svg)](https://github.com/RedisBloom/RedisBloom/releases/latest)\n[![CircleCI](https://circleci.com/gh/RedisBloom/RedisBloom.svg?style=svg)](https://circleci.com/gh/RedisBloom/RedisBloom)\n[![Dockerhub](https://img.shields.io/docker/pulls/redis/redis-stack-server?label=redis-stack-server)](https://img.shields.io/docker/pulls/redis/redis-stack-server)\n[![codecov](https://codecov.io/gh/RedisBloom/RedisBloom/branch/master/graph/badge.svg)](https://codecov.io/gh/RedisBloom/RedisBloom)\n\n# RedisBloom: Probabilistic Data Structures for Redis\n[![Forum](https://img.shields.io/badge/Forum-RedisBloom-blue)](https://forum.redis.com/c/modules/redisbloom)\n[![Discord](https://img.shields.io/discord/697882427875393627?style=flat-square)](https://discord.gg/wXhwjCQ)\n\n\u003cimg src=\"docs/docs/images/logo.svg\" alt=\"logo\" width=\"300\"/\u003e\n\n## Overview\n\nRedisBloom adds a set of probabilistic data structures to Redis, including Bloom filter, Cuckoo filter, Count-min sketch, Top-K, and t-digest. Using this capability, you can query streaming data without needing to store all the elements of the stream. Probabilistic data structures each answer the following questions:\n\n- Bloom filter and Cuckoo filter:\n  -  Did value _v_ already appear in the data stream?\n- Count-min sketch:\n  - How many times did value _v_ appear in the data stream?\n- Top-k:\n  - What are the _k_ most frequent values in the data stream?\n- t-digest:\n  - Which fraction of the values in the data stream are smaller than a given value?\n  - How many values in the data stream are smaller than a given value?\n  - Which value is smaller than _p_ percent of the values in the data stream? (What is the _p_-percentile value?)\n  - What is the mean value between the _p1_-percentile value and the _p2_-percentile value?\n  - What is the value of the *n*ᵗʰ smallest/largest value in the data stream? (What is the value with [reverse] rank _n_?)\n\nAnswering each of these questions accurately can require a huge amount of memory, but you can lower the memory requirements drastically at the cost of reduced accuracy. Each of these data structures allows you to set a controllable trade-off between accuracy and memory consumption. In addition to having a smaller memory footprint, probabilistic data structures are generally much faster than accurate algorithms.\n\nRedisBloom is part of [Redis Stack](https://github.com/redis-stack).\n\n### How do I Redis?\n\n[Learn for free at Redis University](https://university.redis.com/)\n\n[Build faster with the Redis Launchpad](https://launchpad.redis.com/)\n\n[Try the Redis Cloud](https://redis.com/try-free/)\n\n[Dive in developer tutorials](https://developer.redis.com/)\n\n[Join the Redis community](https://redis.com/community/)\n\n[Work at Redis](https://redis.com/company/careers/jobs/)\n\n## Setup\n\nYou can either get RedisBloom setup in a Docker container or on your own machine.\n\n### Docker\nTo quickly try out RedisBloom, launch an instance using docker:\n```sh\ndocker run -p 6379:6379 -it --rm redis/redis-stack-server:latest\n```\n\n### Build it yourself\n\nYou can also build RedisBloom on your own machine. Major Linux distributions as well as macOS are supported.\n\nFirst step is to have Redis installed, of course. The following, for example, builds Redis on a clean Ubuntu docker image (`docker pull ubuntu`):\n\n```\nmkdir ~/Redis\ncd ~/Redis\napt-get update -y \u0026\u0026 apt-get upgrade -y\napt-get install -y wget make pkg-config build-essential\nwget https://download.redis.io/redis-stable.tar.gz\ntar -xzvf redis-stable.tar.gz\ncd redis-stable\nmake distclean\nmake\nmake install\n```\n\nNext, you should get the RedisBloom repository from git and build it:\n\n```\napt-get install -y git\ncd ~/Redis\ngit clone --recursive https://github.com/RedisBloom/RedisBloom.git\ncd RedisBloom\n./sbin/setup\nbash -l\nmake\n```\n\nThen `exit` to exit bash.\n\n**Note:** to get a specific version of RedisBloom, e.g. 2.4.5, add `-b v2.4.5` to the `git clone` command above.\n\nNext, run `make run -n` and copy the full path of the RedisBloom executable (e.g., `/root/Redis/RedisBloom/bin/linux-x64-release/redisbloom.so`).\n\nNext, add RedisBloom module to `redis.conf`, so Redis will load when started:\n\n```\napt-get install -y vim\ncd ~/Redis/redis-stable\nvim redis.conf\n```\nAdd: `loadmodule /root/Redis/RedisBloom/bin/linux-x64-release/redisbloom.so` under the MODULES section (use the full path copied above). \n\nSave and exit vim (ESC :wq ENTER)\n\nFor more information about modules, go to the [Redis official documentation](https://redis.io/topics/modules-intro).\n\n### Run\n\nRun redis-server in the background and then redis-cli:\n\n```\ncd ~/Redis/redis-stable\nredis-server redis.conf \u0026\nredis-cli\n```\n\n## Give it a try\n\nAfter you setup RedisBloom, you can interact with it using redis-cli.\n\nCreate a new bloom filter by adding a new item:\n```\n# 127.0.0.1:6379\u003e BF.ADD newFilter foo\n(integer) 1\n```\n\nFind out whether an item exists in the filter:\n```\n# 127.0.0.1:6379\u003e BF.EXISTS newFilter foo\n(integer) 1\n```\n\nIn 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.\n\n```\n# 127.0.0.1:6379\u003e BF.EXISTS newFilter bar\n(integer) 0\n```\n\nA value `0` means that `bar` is definitely not in the set. Bloom filters do not allow for false negatives.\n\n## Client libraries\n\n| Project | Language | License | Author | Stars | Package | Comment |\n| ------- | -------- | ------- | ------ | ----- | ------- | ------- |\n| [jedis][jedis-url] | Java | MIT | [Redis][redis-url] | ![Stars][jedis-stars] | [Maven][jedis-package]||\n| [redis-py][redis-py-url] | Python | MIT | [Redis][redis-url] | ![Stars][redis-py-stars] | [pypi][redis-py-package]||\n| [node-redis][node-redis-url] | Node.JS | MIT | [Redis][redis-url] | ![Stars][node-redis-stars] | [npm][node-redis-package]||\n| [nredisstack][nredisstack-url] | .NET | MIT | [Redis][redis-url] | ![Stars][nredisstack-stars] | [nuget][nredisstack-package]||\n| redisbloom-go | Go | BSD | [Redis](https://redis.com) |  ![Stars](https://img.shields.io/github/stars/RedisBloom/redisbloom-go.svg?style=social\u0026amp;label=Star\u0026amp;maxAge=2592000) | [GitHub](https://github.com/RedisBloom/redisbloom-go) ||\n| rueidis | Go | Apache License 2.0 | [Rueian](https://github.com/rueian) |  ![Stars](https://img.shields.io/github/stars/rueian/rueidis.svg?style=social\u0026amp;label=Star\u0026amp;maxAge=2592000) | [GitHub](https://github.com/rueian/rueidis) ||\n| rebloom | JavaScript | MIT | [Albert Team](https://cvitae.now.sh/) | ![Stars](https://img.shields.io/github/stars/albert-team/rebloom.svg?style=social\u0026amp;label=Star\u0026amp;maxAge=2592000) |[GitHub](https://github.com/albert-team/rebloom) ||\n| phpredis-bloom | PHP | MIT | [Rafa Campoy](https://github.com/averias) | ![Stars](https://img.shields.io/github/stars/averias/phpredis-bloom.svg?style=social\u0026amp;label=Star\u0026amp;maxAge=2592000) | [GitHub](https://github.com/averias/phpredis-bloom) ||\n| phpRebloom | PHP | MIT | [Alessandro Balasco](https://github.com/palicao) | ![Stars](https://img.shields.io/github/stars/palicao/phprebloom.svg?style=social\u0026amp;label=Star\u0026amp;maxAge=2592000) | [GitHub](https://github.com/palicao/phpRebloom) ||\n| vertx-redis-client | Java | Apache License 2.0 | [Eclipse Vert.x](https://github.com/vert-x3) | ![Stars](https://img.shields.io/github/stars/vert-x3/vertx-redis-client.svg?style=social\u0026amp;label=Star\u0026amp;maxAge=2592000) | [GitHub](https://github.com/vert-x3/vertx-redis-client) ||\n| rustis | Rust | MIT | [Dahomey Technologies](https://github.com/dahomey-technologies) | ![Stars](https://img.shields.io/github/stars/dahomey-technologies/rustis.svg?style=social\u0026amp;label=Star\u0026amp;maxAge=2592000) | [GitHub](https://github.com/dahomey-technologies/rustis) |\n\n[redis-url]: https://redis.com\n\n[redis-py-url]: https://github.com/redis/redis-py\n[redis-py-stars]: https://img.shields.io/github/stars/redis/redis-py.svg?style=social\u0026amp;label=Star\u0026amp;maxAge=2592000\n[redis-py-package]: https://pypi.python.org/pypi/redis\n\n[jedis-url]: https://github.com/redis/jedis\n[jedis-stars]: https://img.shields.io/github/stars/redis/jedis.svg?style=social\u0026amp;label=Star\u0026amp;maxAge=2592000\n[Jedis-package]: https://search.maven.org/artifact/redis.clients/jedis\n\n[nredisstack-url]: https://github.com/redis/nredisstack\n[nredisstack-stars]: https://img.shields.io/github/stars/redis/nredisstack.svg?style=social\u0026amp;label=Star\u0026amp;maxAge=2592000\n[nredisstack-package]: https://www.nuget.org/packages/nredisstack/\n\n[node-redis-url]: https://github.com/redis/node-redis\n[node-redis-stars]: https://img.shields.io/github/stars/redis/node-redis.svg?style=social\u0026amp;label=Star\u0026amp;maxAge=2592000\n[node-redis-package]: https://www.npmjs.com/package/redis\n\n## Documentation\nDocumentation and full command reference at [redisbloom.io](http://redisbloom.io).\n\n## Mailing List / Forum\nGot questions? Feel free to ask at the [RedisBloom mailing list](https://forum.redis.com/c/modules/redisbloom).\n\n## License\nRedisBloom is licensed under the [Redis Source Available License 2.0 (RSALv2)](https://redis.com/legal/rsalv2-agreement) or the [Server Side Public License v1 (SSPLv1)](https://www.mongodb.com/licensing/server-side-public-license).\n","funding_links":[],"categories":["C","Modules \u0026 Extensions"],"sub_categories":["Java"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FRedisBloom%2FRedisBloom","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FRedisBloom%2FRedisBloom","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FRedisBloom%2FRedisBloom/lists"}