Skip to content

Commit

Permalink
Update ValkeyClients.md
Browse files Browse the repository at this point in the history
Signed-off-by: asafpamzn <[email protected]>
  • Loading branch information
asafpamzn committed Sep 26, 2024
1 parent 16d3a15 commit 6c79834
Showing 1 changed file with 24 additions and 30 deletions.
54 changes: 24 additions & 30 deletions clients/ValkeyClients.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
---
# Valkey Clients

Valkey Clients
======
Selecting the right client is a complex task, given that there are over 200 clients compatible with Valkey across different programming languages. This document offers an overview of recommended Valkey clients for various programming languages. To be included in this list, a client must support a mandatory set of features, such as TLS support and cluster mode. Additionally, for each language, we have provided a list of advanced features supported by the respective clients, highlighting the unique advantages of one client over another.

## Mandatory Features Overview

Mandatory Features Overview
----
1. **Cluster Support** - The ability to operate in a clustered environment, where the data is distributed across multiple shards. Cluster support is essential for applications that require high scalability.

2. **TLS/SSL Support** - The capability to establish secure connections using TLS/SSL, which encrypts the data transmitted between the client and the server. This is a critical feature for applications that require data privacy and protection against eavesdropping.

## Advanced Features Overview
Advanced Features Overview
-----

1. **Read from Replica** - The ability to read data from a replica node, which can be useful for load balancing and reducing the load on the primary node. This feature is particularly important in read-heavy applications.

Expand All @@ -22,7 +23,7 @@ Selecting the right client is a complex task, given that there are over 200 clie
5. **Cluster Scan** - This feature ensures that the user experience and guarantees for scanning a cluster are identical to those for scanning a single node. The SCAN function operates as a cursor-based iterator. With each command, the server provides an updated cursor, which must be used as the cursor argument in subsequent calls. A complete iteration with SCAN retrieves all elements present in the collection from start to finish. If an element exists in the collection at the beginning and remains until the end of the iteration, SCAN will return it. Conversely, any element removed before the iteration begins and not re-added during the process will not be returned by SCAN. A client supporting this feature ensures the scan iterator remains valid even during failovers or cluster scaling (in or out) during the SCAN operation.

6. **Latency-Based Read from Replica** - This feature enables reading data from the nearest replica, i.e., the replica that offers the best latency. It supports complex deployments where replicas are distributed across various distances, including different geographical regions, to ensure data is read from the closest replica, thereby minimizing latency.

7. **AZ-Based Read from Replica** - This feature enables reading data from replicas within the same Availability Zone (AZ). When running Valkey in a cloud environment across multiple AZs, it is preferable to keep traffic localized within an AZ to reduce costs and latency. By reading from replicas in the same AZ as the client, you can optimize performance and minimize cross-AZ data transfer charges. For more detailed information about this feature and its implementation, please refer to the following link: https://github.com/valkey-io/valkey/pull/700

8. **Client Side Caching** - Valkey client-side caching is a feature that allows clients to cache the results of Valkey queries on the client-side, reducing the need for frequent communication with the Valkey server. This can significantly improve application performance by lowering latency, reducing the network usage and cost and reducing the load on the Valkey server.
Expand All @@ -31,13 +32,8 @@ Selecting the right client is a complex task, given that there are over 200 clie

10. **Persistent Connection Pool** - This feature enables the Valkey client to maintain a pool of persistent connections to the Valkey server, improving performance and reducing overhead. Instead of establishing a new connection for each request, the client can reuse existing connections from the pool, minimizing the time and resources required for connection setup.




---

## Table of Contents

Table of Contents
----
- [Table of Contents](#table-of-contents)
- [Python](#python)
- [JavaScript/Node.js](#javascriptnodejs)
Expand All @@ -46,8 +42,8 @@ Selecting the right client is a complex task, given that there are over 200 clie
- [PHP](#php)


## Python

Python
-----
- **valkey-glide**
- GitHub: [valkey-glide](https://github.com/valkey-io/valkey-glide/tree/main/python)
- Installation: `pip install valkey-glide`
Expand All @@ -58,7 +54,7 @@ Selecting the right client is a complex task, given that there are over 200 clie
- Installation: `pip install valkey`
- Description: The Python interface to the Valkey key-value store.

### Feature Comparison Table
**Feature Comparison Table:**

| Feature | valkey-glide | valkey-py |
|----------------------------------------------|:------------:|:---------:|
Expand All @@ -73,8 +69,8 @@ Selecting the right client is a complex task, given that there are over 200 clie
| **`CLIENT CAPA redirect`** | No | No |
| **Persistent Connection Pool** | No | Yes |

## JavaScript/Node.js

JavaScript/Node.js
----
- **valkey-glide**
- GitHub: [valkey-glide](https://github.com/valkey-io/valkey-glide/tree/main/node)
- Installation: `npm install valkey-glide`
Expand All @@ -85,7 +81,7 @@ Selecting the right client is a complex task, given that there are over 200 clie
- Installation: `npm install iovalkey`
- Description: A robust, performance-focused and full-featured Redis client for Node.js. This is a friendly fork of ioredis after this commit.

### Feature Comparison Table
**Feature Comparison Table:**

| Feature | valkey-glide | iovalkey |
|----------------------------------------------|:------------:|:---------:|
Expand All @@ -100,7 +96,8 @@ Selecting the right client is a complex task, given that there are over 200 clie
| **`CLIENT CAPA redirect`** | No | No |
| **Persistent Connection Pool** | No | Yes |

## Java
Java
----

- **valkey-glide**
- GitHub: [valkey-glide](https://github.com/valkey-io/valkey-glide/tree/main/java)
Expand All @@ -112,8 +109,7 @@ Selecting the right client is a complex task, given that there are over 200 clie
- Installation: Available via Maven and Gradle
- Description: valkey-java is Valkey's Java client, derived from Jedis fork, dedicated to maintaining simplicity and high performance.

<!--- This heading should not be included in the TOC --->
### Feature Comparison Table
**Feature Comparison Table:**

| Feature | valkey-glide | valkey-java |
|----------------------------------------------|:------------:|:-----------:|
Expand All @@ -129,15 +125,14 @@ Selecting the right client is a complex task, given that there are over 200 clie
| **Persistent Connection Pool** | No | Yes |


## Go

Go
-----
- **valkey-go**
- GitHub: [go-valkey-go](https://github.com/valkey-io/valkey-go)
- Installation: TBD
- Description: A fast Golang Valkey client that does auto pipelining and supports server-assisted client-side caching.

<!--- This heading should not be included in the TOC --->
### Feature Comparison Table
**Feature Comparison Table:**

| Feature | valkey-go |
|----------------------------------------------|:----------:|
Expand All @@ -152,8 +147,8 @@ Selecting the right client is a complex task, given that there are over 200 clie
| **`CLIENT CAPA redirect`** | No |
| **Persistent Connection Pool** | Yes |

## PHP

PHP
----
- **Predis**
- GitHub: [Predis](https://github.com/predis/predis)
- Installation: `composer require predis/predis`
Expand All @@ -164,8 +159,7 @@ Selecting the right client is a complex task, given that there are over 200 clie
- Installation: Install via PECL or compile from source
- Description: A PHP extension for Redis, offering high performance and a native API.

<!--- This heading should not be included in the TOC --->
### Feature Comparison Table
**Feature Comparison Table:**

| Feature | Predis | phpredis |
|----------------------------------------------|:-------:|:--------:|
Expand Down

0 comments on commit 6c79834

Please sign in to comment.