Home / node @valkey/valkey-glide
Welcome to Valkey GLIDE!
Valkey General Language Independent Driver for the Enterprise (GLIDE) is the official open-source Valkey client library, proudly part of the Valkey organization. Our mission is to make your experience with Valkey and Redis OSS seamless and enjoyable. Whether you're a seasoned developer or just starting out, Valkey GLIDE is here to support you every step of the way.
Why Choose Valkey GLIDE?
- Community and Open Source: Join our vibrant community and contribute to the project. We are always here to respond, and the client is for the community.
- Reliability: Built with best practices learned from over a decade of operating Redis OSS-compatible services.
- Performance: Optimized for high performance and low latency.
- High Availability: Designed to ensure your applications are always up and running.
- Cross-Language Support: Implemented using a core driver framework written in Rust, with language-specific extensions to ensure consistency and reduce complexity.
- Stability and Fault Tolerance: We brought our years of experience to create a bulletproof client.
- Backed and Supported by AWS and GCP: Ensuring robust support and continuous improvement of the project.
Documentation
See GLIDE's Node.js documentation site.
Supported Engine Versions
Refer to the Supported Engine Versions table for details.
Getting Started - Node Wrapper
System Requirements
The release of Valkey GLIDE was tested on the following platforms:
Linux GNU
Linux with glibc 2.17 or higher.
MacOS (Darwin)
MacOS Apple Silicon/aarch_64 and x86_64/amd64.
- Full tests are running on MacOS 15.0 arm64/aarch64
- Minimal tests are running on: MacOS 13.5 x8664/amd64(We do not recommend using MacOS Intel for production, It is supported for development purposes)_
Alpine
All alpine versions that are using musl libc 1.2.3 (All Alpine non deprecated alpine versions) or higher should be supported. Tests are running on:
- node:alpine (x86_64/amd64 and arm64/aarch64)
NodeJS supported version
Node.js 16 or higher. For npm users on linux it is recommended to use npm >=11 since it support optional download base on libc, yarn users should not be concerned
- Note: The library is dependent on the protobufjs library, which add a size to the package. The package is using the protobufjs/minimal version, hence, if size matter, bundlers should be able to strip the unused code. It should reduce the size of the dependency from 19kb gzipped to 6.5kb gzipped.
Building & Testing
Development instructions for local building & testing the package are in the DEVELOPER.md file.
Quick Start
Installation
npm i @valkey/valkey-glide
Basic Examples
Standalone Mode:
import { GlideClient, GlideClusterClient, Logger } from "@valkey/valkey-glide";
// When Valkey is in standalone mode, add address of the primary node, and any replicas you'd like to be able to read from.
const addresses = [
{
host: "localhost",
port: 6379,
},
];
// Check `GlideClientConfiguration/GlideClusterClientConfiguration` for additional options.
const client = await GlideClient.createClient({
addresses: addresses,
// if the server uses TLS, you'll need to enable it. Otherwise, the connection attempt will time out silently.
// useTLS: true,
// It is recommended to set a timeout for your specific use case
requestTimeout: 500, // 500ms timeout
clientName: "test_standalone_client",
});
// The empty array signifies that there are no additional arguments.
const pong = await client.customCommand(["PING"]);
console.log(pong);
const set_response = await client.set("foo", "bar");
console.log(`Set response is = ${set_response}`);
const get_response = await client.get("foo");
console.log(`Get response is = ${get_response}`);
Cluster Mode:
import { GlideClient, GlideClusterClient, Logger } from "@valkey/valkey-glide";
// When Valkey is in cluster mode, add address of any nodes, and the client will find all nodes in the cluster.
const addresses = [
{
host: "localhost",
port: 6379,
},
];
// Check `GlideClientConfiguration/GlideClusterClientConfiguration` for additional options.
const client = await GlideClusterClient.createClient({
addresses: addresses,
// if the cluster nodes use TLS, you'll need to enable it. Otherwise the connection attempt will time out silently.
// useTLS: true,
// It is recommended to set a timeout for your specific use case
requestTimeout: 500, // 500ms timeout
clientName: "test_cluster_client",
});
// The empty array signifies that there are no additional arguments.
const pong = await client.customCommand(["PING"], { route: "randomNode" });
console.log(pong);
const set_response = await client.set("foo", "bar");
console.log(`Set response is = ${set_response}`);
const get_response = await client.get("foo");
console.log(`Get response is = ${get_response}`);
client.close();
Supported platforms
Currently, the package is tested on:
| Operation systems | C lib | Architecture |
|---|---|---|
Linux |
glibc, musl libc |
x86_64, arm64 |
macOS |
Darwin |
x86_64, arm64 |
Community and Feedback
We encourage you to join our community to support, share feedback, and ask questions. You can approach us for anything on our Valkey Slack: Join Valkey Slack.