Installation

Prerequisites

  • Redis 8.x (Open Source). Verified on Redis 8.4.0.
  • Rust 1.85+ (stable) — only needed if building from source.

Option 1: Install from GitHub Release

Pre-built artifacts are attached to GitHub Releases as .tar.gz archives with SHA-256 checksums.

# Download the release for your platform (example: Linux x86_64, version v0.1.0)
curl -LO https://github.com/fcenedes/RedCouch/releases/download/v0.1.0/redcouch-v0.1.0-x86_64-unknown-linux-gnu.tar.gz
curl -LO https://github.com/fcenedes/RedCouch/releases/download/v0.1.0/redcouch-v0.1.0-x86_64-unknown-linux-gnu.tar.gz.sha256

# Verify checksum
sha256sum -c redcouch-v0.1.0-x86_64-unknown-linux-gnu.tar.gz.sha256

# Extract
tar xzf redcouch-v0.1.0-x86_64-unknown-linux-gnu.tar.gz

This extracts libred_couch.so (Linux) or libred_couch.dylib (macOS).

Option 2: Build from Source

git clone https://github.com/fcenedes/RedCouch.git
cd RedCouch
cargo build --release

The compiled module is at:

  • macOS: target/release/libred_couch.dylib
  • Linux: target/release/libred_couch.so

Loading the Module

Command Line

redis-server --loadmodule /path/to/libred_couch.so      # Linux
redis-server --loadmodule /path/to/libred_couch.dylib    # macOS

redis.conf

Add to your Redis configuration file:

loadmodule /path/to/libred_couch.so

Runtime (MODULE LOAD)

redis-cli MODULE LOAD /absolute/path/to/libred_couch.so

Verify

After loading, check that the module is active:

redis-cli MODULE LIST
# Should show "redcouch" in the list

# Verify the memcached endpoint is listening
nc -z 127.0.0.1 11210 && echo "RedCouch listening" || echo "Not listening"

Unloading the Module

redis-cli MODULE UNLOAD redcouch

Note: RedCouch does not implement a module unload/deinit handler. The background TCP listener thread has no graceful shutdown path. Unloading via MODULE UNLOAD is unverified and may leave the listener thread orphaned. The recommended approach is to restart the Redis process to fully stop the module.

Troubleshooting

SymptomCauseFix
FATAL: cannot bind 127.0.0.1:11210Port already in useStop the other process using port 11210
Module loads but port 11210 not reachableBind failed silentlyCheck Redis logs for the bind error message
MODULE LOAD returns errorWrong platform artifactUse .so for Linux, .dylib for macOS
Connection refused after 1024 clientsConnection limit reachedReduce concurrent connections or wait for existing ones to close