Valkey General Language Independent Driver for the Enterprise (GLIDE) is the official open-source Valkey client library, part of the Valkey organization. The Ruby gem (valkey-glide-rb) wraps Valkey GLIDE Core, giving Ruby applications the performance and reliability of the GLIDE core.
- Community and Open Source: Developed in the open under the Valkey organization; contributions welcome.
- Reliability: Built with best practices learned from over a decade of operating Redis OSS-compatible services.
- Performance: Optimized for high performance and low latency via the Rust-based GLIDE core.
- High Availability: Cluster-aware routing, reconnection, and fault tolerance.
- Cross-Language Consistency: Same core driver as Python, Java, Node.js, and Go clients.
- Observability: Native OpenTelemetry tracing and client statistics.
- Command coverage: Implementation status wiki
- Valkey GLIDE overview: glide.valkey.io
- Supported engine versions: valkey-glide README: Supported Engine Versions
| Engine Type | 6.2 | 7.0 | 7.1 | 7.2 | 8.0 | 8.1 | 9.0 |
|---|---|---|---|---|---|---|---|
| Valkey | - | - | - | ✓ | ✓ | ✓ | ✓ |
| Redis OSS | ✓ | ✓ | ✓ | ✓ | - | - | - |
- glibc 2.17+ or musl 1.2.3+
- Ruby 3.0+
The following platforms are tested in CI:
- Ubuntu 24 (x86_64 and arm64)
- Alpine Linux 3 (x86_64 and arm64, via musl targets)
- macOS 14+ (Apple silicon / arm64)
Notes: valkey-glide-rb depends on the compiled Rust core. For unsupported OS like Intel Mac, you will need to build Valkey GLIDE manually.
Install from RubyGems:
gem install valkey-glide-rbOr add to your Gemfile:
gem "valkey-glide-rb"Verify installation:
ruby -e 'require "valkey"; puts Valkey::VERSION'require "valkey"
client = Valkey.new(host: "localhost", port: 6379)
client.set("mykey", "hello world")
# => "OK"
client.get("mykey")
# => "hello world"
client.closenodes = [
{ host: "127.0.0.1", port: 7000 },
{ host: "127.0.0.1", port: 7001 },
{ host: "127.0.0.1", port: 7002 },
{ host: "127.0.0.1", port: 7003 },
{ host: "127.0.0.1", port: 7004 },
{ host: "127.0.0.1", port: 7005 }
]
client = Valkey.new(nodes: nodes, cluster_mode: true)
client.set("foo", "bar")
client.get("foo")
# => "bar"| Option | Description |
|---|---|
host, port |
Server address (default 127.0.0.1:6379) |
url |
redis://, rediss://, valkey://, or valkeys:// URI (merged with explicit options) |
db |
Database index (standalone only) |
password, username |
Authentication |
timeout |
Request timeout in seconds (default 5.0) |
connect_timeout |
Connection timeout in seconds |
ssl |
Enable TLS if true |
ssl_params |
TLS options {ca_file, cert, key, ca_path, root_certs} |
cluster_mode |
Enable cluster client |
nodes |
Array of { host:, port: } hashes |
protocol |
:resp2 (default) or :resp3 |
client_name |
CLIENT SETNAME value |
reconnect_attempts, reconnect_delay, reconnect_delay_max |
Connection retry strategy |
read_from |
Read routing: the Valkey::ReadFrom::* constants: PRIMARY, PREFER_REPLICA, AZ_AFFINITY, AZ_AFFINITY_REPLICAS_AND_PRIMARY.AZ_AFFINITY/AZ_AFFINITY_REPLICAS_AND_PRIMARY require client_az to also be set. |
client_az |
Availability-zone identifier for AZ_AFFINITY / AZ_AFFINITY_REPLICAS_AND_PRIMARY routing (e.g. "us-west-2a") |
inflight_requests_limit |
Maximum concurrent in-flight requests (non-negative integer) |
lazy_connect |
Delay the actual connection until the first command is sent |
periodic_checks |
Cluster topology health checks: { manual_interval: { duration_in_sec: N } } or { disabled: true }. Accepted (as a no-op) on standalone connections. |
For AI-assisted development, see AGENTS.md and CLAUDE.md.
Contributing: CONTRIBUTING.md.
For setting up your local development, see DEVELOPER.md
Join the community on Valkey Slack to ask questions and share feedback: Join Valkey Slack.
Report issues: valkey-glide-ruby issues.
Apache-2.0. See LICENSE in the repository.