Valkey GLIDE: a multi-language client built on a Rust core
An open source Valkey client library that supports Valkey, and Redis open source 6.2, 7.0 and 7.2. Valkey GLIDE is designed for reliability, optimized performance, and high-availability, for Valkey and Redis OSS based applications. GLIDE is a multi language client library, written in Rust with programming language bindings, such as Java and Python
At a glance
- What is it?
- Valkey GLIDE is the official open source client for Valkey and Redis OSS, with a Rust core and language bindings for Python, Java, Node.js, Go, C# and PHP, and it adds cluster-aware multi-slot commands, sharded PubSub, cluster scan and OpenTelemetry tracing on top of the standard protocol. The language bindings are being split into separate repositories one at a time.
- Who is it for?
- Valkey GLIDE suits a team that wants one client behaviour across several languages, or that needs the cluster-aware features the README lists, such as multi-slot MGET and cluster scan, without writing them per binding. It is the wrong tool for a team that wants a small dependency, since the Rust core and its FFI layer are a real dependency, and the wrong choice for a project on a Redis version older than 6.2, which the compatibility table does not cover.
- Can I use it commercially?
- Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 1 day ago.
- What is it written in?
- Mainly Java, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 24, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What GLIDE is and who stands behind it
Valkey GLIDE is the General Language Independent Driver for the Enterprise, an official open source Valkey client library, and the README says proudly that it is part of the Valkey organisation. The homepage is glide.valkey.io.
The mission sentence in the README is worth reading for the attitude it takes. The aim is to make your experience with Valkey and Redis OSS seamless and enjoyable, whether you are a seasoned developer or just starting out, and the claim is that GLIDE supports you every step of the way.
The reasons given for choosing it are more informative than the marketing. Reliability comes from best practices learned from over a decade of operating Redis OSS compatible services. Performance is described as optimized for high performance and low latency. High availability is a design goal, ensuring applications stay up and running.
The cross-language support line is the architectural point. It is implemented using a core driver framework written in Rust, with language-specific extensions to ensure consistency and reduce complexity. So the protocol handling, the connection handling and the cluster logic live once in Rust, and each binding is a thin layer over it. That is the same approach the Redis ecosystem took with the RESP3 spec and the Rust rewrite of the server, and it is why the behaviour does not drift between the Python and the Java client.
The README also states the client is backed and supported by AWS and GCP, which is a meaningful statement for a client library, because it means the people who operate large managed Valkey and Redis services are investing in it. The licence field on the repository says Apache-2.0, and the last push was on 2026-10-20.
The features that go beyond the standard protocol
The feature list is where GLIDE distinguishes itself from a thin protocol client, and the cluster-aware entries are the ones to look at.
AZ Affinity ensures low-latency connections and minimal cross-zone costs by routing read traffic to replicas in the client's availability zone. The README flags the requirement clearly, and it is a hard one: Valkey server version 8.0 or newer, or AWS ElastiCache for Valkey 7.2 or newer. This is a topology-aware client rather than a connection pool, and it is the kind of feature that only makes sense in a managed multi-zone deployment.
Cluster-Aware MGET, MSET, DEL and FLUSHALL execute multi-key commands across cluster slots without manual key grouping. In a cluster, a multi-key command normally fails with a cross-slot error unless the keys hash to the same slot, and the usual workarounds are to compute the slot yourself or to split the command. Doing that in the client means every caller has to remember to.
Cluster Scan gives unified key iteration across shards through a consistent high-level API, which is again a case where the raw command is per shard and the client assembles the whole.
On the PubSub side there are two entries. PubSub Auto-Reconnection does background resubscription on topology updates or disconnection, and Sharded PubSub has native support across cluster slots.
Then there are the developer-facing entries. Batching runs pipeline and transaction commands in a single network roundtrip, which reduces latency and improves throughput for command-heavy workloads. OpenTelemetry gives integrated tracing for observability. JavaScript and TypeScript support covers TS, CJS and MJS for modern and legacy runtimes, and Python support covers asyncio, anyio and trio.
Which engine versions the compatibility table covers
The README includes a table of API compatibility across engine versions, and it is worth reading carefully because the coverage is not symmetric.
Valkey is supported from 7.2 through 7.2, 8.0, 8.1 and 9.0, and the 7.0 and 6.2 columns are marked with a dash for Valkey. Redis is supported at 6.2, 7.0, 7.1 and 7.2, and the 8.0, 8.1 and 9.0 columns are marked with a dash for Redis.
So the practical reading is that this client targets recent Valkey and recent-but-not-newest Redis OSS. A deployment still on Redis 6.2 is covered, and a deployment on Redis 8.x is not, while the newest Valkey releases are.
That asymmetry is the natural consequence of the project being the Valkey community's own client. The feature set it adds, the AZ affinity work in particular, is developed against Valkey's newer server capabilities, and the README is explicit that AZ affinity needs Valkey 8.0 or newer, or ElastiCache for Valkey 7.2 or newer.
The client also exposes a Modules API and a compression feature marked experimental, and the documentation indexes separate pages for custom commands, connection management, multi-slot command handling, the inflight request limit, PubSub support, cluster scan, dynamic password management and client-side caching. That page list is a reasonable map of the surface area.
The repository layout and the Rust core
The repository is a monorepo of language bindings over a shared core, and the top level directory listing shows the structure.
There is glide-core/, which is the Rust core, an ffi/ directory for the foreign function interface layer, and rust/ for the Rust preview release. Then there is one directory per binding: java/, node/, python/, go/, and a rust/ directory for the Rust client itself. There are also glide-logger/ and glide-telemetry/ for logging and telemetry, a benchmarks/ directory, an examples/ directory, a utils/ directory, and a docs/ directory.
The examples directory is broader than the current language set, with java/, java8/, kotlin/, node/, python/ and scala/ subdirectories, which suggests the Scala and Kotlin usage examples predate or outlive the supported binding list.
The build system is a Makefile with one target per language. The Java path uses Gradle, with a buildAll target, spotlessApply for formatting and checkstyle for linting, and an integTest target. The Python path uses a dev.py script with build, lint and test subcommands. The Node path uses npm with a build:release script and a separate dependency staging step that installs both the Node and the Rust client dependencies before running npm test.
There is a check-valkey-server target that the test targets depend on, which tells you the integration tests need a running server rather than a mock, and the default all target builds and tests Java, Python, Node and Go and then runs the Python and Java linters.
The language status and the repository split in progress
The Current Status section of the README is the part to read before you pick a binding, because the project is in the middle of reorganising itself.
The client currently supports Python, Java, Node.js, Go, C# and PHP. C# and PHP have preview releases and have been moved to separate repositories to simplify development. Active development continues for C#, PHP, C++ and Ruby clients. And Python, Java, Node.js and Go clients will be moved to separate repositories in the near future.
So the direction is one repository per language, with this one becoming the core, and the C# and PHP split having already happened. The README links the C#, C++ and Ruby repositories as under development SDKs.
The practical consequence for a user is that the dependency you depend on today may live somewhere else tomorrow, and that the release numbering is not uniform across the family. The recent releases in this repository show the pattern, with a v2.5.3 and a v2.5.2 for the main client line and a separate rust/v0.9.0 tagged as a Rust preview from the same period. The Rust client is on its own version line at 0.x while the main client is on 2.x.
The under-development SDKs, C#, C++ and Ruby, are on separate repositories with their own release processes, so a team standardising on one of those is not tracking the same artefact as a team on Python or Java.
Migration guides and the ecosystem
The documentation includes migration guides for every client that has a significant existing user base, and that is a sign of how seriously the project treats adoption.
There are guides for go-redis, ioredis, Jedis, Lettuce and Redisson on the JVM side, redis-py for Python, PHPRedis for PHP, and StackExchange.Redis for .NET. The StackExchange.Redis one is in the repository wiki rather than on the documentation site, which suggests it is the newest or the least finished of the set.
Migration guides matter more than usual for a client like this because the API surface is a design decision, not an accident. A client that wraps a native Rust core exposes a different shape of API from a hand written client, and the guides are how a project tells you what changes.
The Ecosystem section is described as a growing ecosystem of integrations and extensions that enhance functionality across frameworks and use cases, and the README starts listing them, with a node-flexible- entry visible before the excerpt ends.
The documentation site also has a contributors meeting page in the wiki, which is a small signal that this is a project with an organised community rather than a handful of maintainers.
Where GLIDE is the wrong choice
The first limitation is the dependency weight. The client is a Rust core behind a foreign function interface, so a Python or Java application that adds it is shipping a native binary and a build toolchain story, and the README's own repository layout with an ffi/ directory and a glide-core/ directory makes that clear. For a small script that opens a socket and issues a GET, that is a lot of machinery.
The second is the version churn in the language bindings. The README says four of the six supported languages are about to be moved to separate repositories, and C# and PHP have already moved. A team that pins a dependency now may find that the artefact it pins is a different repository, and the release numbering is not comparable across the family.
The third is the engine coverage. A Redis deployment on 8.x or 9.x is not in the compatibility table, and a team on a recent Redis OSS release with no intention of moving to Valkey has to check whether the client it is considering even claims to support its server.
The fourth is the feature gating. AZ Affinity, which is the most interesting feature in the list, requires Valkey 8.0 or newer or ElastiCache for Valkey 7.2 or newer, so a deployment that cannot meet that does not get it. Cluster scan, sharded PubSub and multi-slot commands also need a cluster, so on a single-node server most of the list is inert.
The fifth is that a few things are still marked experimental or in preview, notably compression and the Rust client itself, and the C# and PHP bindings are described as preview releases.
How GLIDE compares with redis-py, jedis and Lettuce
The comparison with redis-py is the reference point for a Python team, and the difference in approach is that redis-py is a mature pure Python client while GLIDE is a native core with a Python binding over it. The consequence is that GLIDE's behaviour is fixed in one place, so a cluster-aware command or a PubSub reconnection rule is the same code path in every language, and the cost is a compiled dependency and a binding layer between the core and your application.
On the JVM side, Jedis and Lettuce are the two comparisons that matter, and they differ from each other in a way that maps onto the same choice. Jedis is the older, blocking, connection-per-client design with a familiar API and a large user base. Lettuce is built on Netty, is event-driven, and is the modern default for reactive and clustered workloads. GLIDE's position between them is that it is event-driven like Lettuce while presenting a consistent cross-language surface, and it adds the multi-slot and cluster scan handling that a cluster-aware client needs.
The third comparison is with the Redis clients for Node and Go, ioredis and go-redis, which the migration guides cover. Both are mature and widely used, and the argument for moving is usually a feature from the GLIDE list rather than performance, since the underlying network behaviour is comparable.
The fourth is the strategic point. GLIDE is the client the Valkey project and its sponsors intend to be the reference, and a team that is standardising on Valkey rather than Redis will find the ecosystem, the module support and the Valkey-specific features arriving here first. That is a stronger argument for choosing it than any benchmark.
Licence, maintenance and what to verify before you commit
The licence field on the repository says Apache-2.0, with a LICENSE file at the root, and a NOTICE file alongside it. Apache 2.0 is a permissive licence with an explicit patent grant, and the NOTICE file is the conventional way of recording third party attributions for a project of this size.
The project is not archived and the last push was on 2026-10-20, so it is being worked on daily, and the release history shows a v2.5.3 from 2026-09-25 and a v2.5.2 from 2026-09-02 alongside the Rust preview. The repository also has a CHANGELOG.md, a CODEOWNERS file, a CONTRIBUTING.md, and a set of process documents for picking up issues, reviewing pull requests, submitting pull requests and triaging issues, which is a sign of a project with real contributor volume rather than a single maintainer.
The README also mentions a v2.4.0 section listing some of the changes planned for that release, including client-side caching for Java, Node and Go, complete support for Valkey Search 1.2 and the JSON module, and a NodeDiscoveryMode option for all languages. The README labels that section as changes planned, which is a small inconsistency in a release history where 2.4.0 has already shipped, and the release page is the authoritative list.
Four things to check before you commit.
Which engine version you run, against the compatibility table, since Redis 8.x and 9.x are outside it.
Which binding you will actually depend on, and where that binding will live in a year, given the repository split in progress.
Whether the features you want are gated behind a server version, with AZ Affinity the clearest case.
And whether you need anything marked experimental, since compression and the Rust client are the two the README flags.
Editorial conclusion
Valkey GLIDE suits a team that wants one client behaviour across several languages, or that needs the cluster-aware features the README lists, such as multi-slot MGET and cluster scan, without writing them per binding. It is the wrong tool for a team that wants a small dependency, since the Rust core and its FFI layer are a real dependency, and the wrong choice for a project on a Redis version older than 6.2, which the compatibility table does not cover. Before adopting it, check which engine versions the table covers for your deployment, and note that the C# and PHP bindings have already moved to separate repositories and the others are to follow.
Frequently asked questions
What is Valkey GLIDE?
It is the General Language Independent Driver for the Enterprise, an official open source client library for Valkey and Redis OSS. It is built on a core driver framework written in Rust with language-specific extensions, and is part of the Valkey organisation, backed by AWS and GCP.
Which languages does Valkey GLIDE support?
Python, Java, Node.js, Go, C# and PHP, with C# and PHP in preview. C# and PHP have already been moved to separate repositories, and Python, Java, Node.js and Go are to be moved in the near future. C++ and Ruby clients are in separate under-development repositories.
Which Valkey and Redis versions does GLIDE support?
The compatibility table shows Valkey at 7.2, 8.0, 8.1 and 9.0, and Redis OSS at 6.2, 7.0, 7.1 and 7.2. The AZ affinity feature additionally requires Valkey 8.0 or newer, or AWS ElastiCache for Valkey 7.2 or newer.
What cluster features does Valkey GLIDE add?
Cluster-aware MGET, MSET, DEL and FLUSHALL that work across slots without manual key grouping, unified cluster scan across shards, sharded PubSub support, and AZ affinity that routes read traffic to a replica in the client's availability zone.
Does GLIDE have migration guides from other clients?
Yes, the documentation links guides for go-redis, ioredis, Jedis, Lettuce, Redisson, redis-py, PHPRedis and StackExchange.Redis, so teams can see what changes before moving from an existing client.
What licence is Valkey GLIDE released under?
Apache-2.0, with the terms in the LICENSE file and a NOTICE file at the root of the repository for third party attributions.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/valkey-io-valkey-glide)Was this useful?