run-macro-benchmarks

Run RediSearch end-to-end macro benchmarks against a real redis-server via redisbench-admin.

6.2k|596|Updated May 5, 2016
One-click install
npx skills add https://github.com/RediSearch/RediSearch --skill run-macro-benchmarks
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: run-macro-benchmarks
Source: https://github.com/RediSearch/RediSearch/tree/main/.skills/run-macro-benchmarks
Command: npx skills add https://github.com/RediSearch/RediSearch --skill run-macro-benchmarks

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires redisbench-admin.

What problem does it solve?

Measuring whole-module RediSearch performance (throughput and latency) requires correctly resolving release binaries, loading the right modules, and running benchmark configs against a live redis-server — a process with many silent failure modes like benchmarking a debug build or loading into a stale server.

Core Features & Use Cases

  • Benchmark Resolution: Accepts a bare benchmark name, filename, or full path and resolves it to a tests/benchmarks/*.yml config, or lists available benchmarks when no argument is given.
  • Safe Module Resolution: Locates exactly one release redisearch.so and rejson.so under bin/, refusing to guess when multiple build flavors (debug, coverage) exist.
  • Environment Validation: Checks that redis-server, memtier_benchmark, ftsb_redisearch, Python deps, and a free port 6379 are available before running.
  • Use Case: After optimizing a query path in RediSearch, run the search-expire-doc-json-10-milliseconds benchmark to verify throughput and latency percentiles against a real redis-server before opening a PR.

Quick Start

Run the macro benchmark search-expire-doc-json-10-milliseconds and summarize the throughput and latency results.

Frequently Asked Questions about run-macro-benchmarks

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I run a RediSearch macro benchmark locally?

Use redisbench-admin run-local with the benchmark's tests/benchmarks/*.yml config, passing the release redisearch.so and rejson.so module paths. The run starts its own redis-server on port 6379 and reports throughput and latency percentiles.

What is the difference between macro benchmarks and Rust micro-benchmarks in RediSearch?

Macro benchmarks measure whole-module performance against a real redis-server using redisbench-admin and YAML configs. Rust micro-benchmarks use Criterion for isolated function-level timing and are run with a separate workflow.

Why does the benchmark fail with a keyspace check error like 0 != expected keys?

This usually means port 6379 was already occupied by another redis-server, so redisbench-admin's server failed to bind and the dataset loaded into the stale server without the right modules. Free port 6379 before running.

Why is RedisJSON required for RediSearch benchmarks?

RedisJSON is always loaded like CI so JSON benchmarks work. Without rejson.so, dataset loading fails with unknown command 'JSON.SET' and the run aborts on a keyspace check.

Can I run a benchmark while building RediSearch?

No. Running benchmarks concurrently with build.sh, make, or cargo causes contention on the shared Cargo build directory and running redis instances, which skews benchmark timings.