RediSearch is a Redis module that provides querying, secondary indexing, and full-text search for Redis. To use RediSearch, you first declare indexes on your Redis data. You can then use the RediSearch query language to query that data.
RediSearch uses compressed, inverted indexes for fast indexing with a low memory footprint.
RediSearch indexes enhance Redis by providing exact-phrase matching, fuzzy search, and numeric filtering, among many other features.
If you're just getting started with RediSearch, check out the official RediSearch tutorial. Also, consider viewing our RediSearch video explainer.
The fastest way to get up and running with RediSearch is by using the RediSearch Docker image.
To try RediSearch, either use the RediSearch Docker image, or create a free Redis Cloud Essentials account to get a RediSearch instance in the cloud.
The RediSearch Docker image makes it easy to try RediSearch.
To create a local RediSearch container, run:
$ docker run -p 6379:6379 redislabs/redisearch:latest
To connect to this instance, run:
$ redis-cli
The RediSearch documentation provides a complete overview of RediSearch. Helpful sections include:
- The RediSearch quick start
- The RediSearch command reference
- References on features such as aggregations, higlights, stemming, and spelling correction.
Got questions? Join us in #redisearch on the Redis Discord server.
If you have a more detailed question, drop us a line on the RediSearch Discussion Forum.
You can use any standard Redis client library to run RediSearch commands, but it's easiest to use a library that wraps the RediSearch API.
Language | Library | Author | License | Stars |
---|---|---|---|---|
Python | redisearch-py | Redis Labs | BSD | |
Java (Jedis client library) | JRediSearch | Redis Labs | BSD | |
Java (Lettuce client library) | lettusearch | Redis Labs | Apache-2.0 | |
Java | spring-redisearch | Redis Labs | Apache-2.0 | |
Java | redis-modules-java | dengliming | Apache-2.0 | |
Go | redisearch-go | Redis Labs | BSD | |
JavaScript | RedRediSearch | Kyle J. Davis | MIT | |
JavaScript | redis-redisearch | Kyle J. Davis | MIT | |
TypeScript | redis-modules-sdk | Dani Tseitlin | BSD-3-Clause | |
C# | NRediSearch | Marc Gravell | MIT | |
PHP | redisearch-php | Ethan Hann | MIT | |
Rust | redisearch-api-rs | Redis Labs | BSD | |
Ruby on Rails | redi_search_rails | Dmitry Polyakovsky | MIT | |
Ruby | redisearch-rb | Victor Ruiz | MIT | |
Ruby | redi_search | Nick Pezza | MIT |
- Full-Text indexing of multiple fields in Redis hashes
- Incremental indexing without performance loss
- Document ranking (using tf-idf, with optional user-provided weights)
- Field weighting
- Complex boolean queries with AND, OR, and NOT operators
- Prefix matching, fuzzy matching, and exact-phrase queries
- Support for double-metaphone phonetic matching
- Auto-complete suggestions (with fuzzy prefix suggestions)
- Stemming-based query expansion in many languages (using Snowball)
- Support for Chinese-language tokenization and querying (using Friso)
- Numeric filters and ranges
- Geospatial searches using Redis geospatial indexing
- A powerful aggregations engine
- Supports for all utf-8 encoded text
- Retrieve full documents, selected fields, or only the document IDs
- Sorting results (for example, by creation date)
RediSearch has a distributed cluster version that scales to billions of documents across hundreds of servers. At the moment, distributed RediSearch is available as part of Redis Enterprise Cloud and Redis Enterprise Software.
See RediSearch on Redis Enterprise for more information.
RediSearch is licensed under the Redis Source Available License Agreement.