From db67a0660503cab31f3b18e2731105ff71de6d97 Mon Sep 17 00:00:00 2001 From: asafpamzn <97948347+asafpamzn@users.noreply.github.com> Date: Thu, 15 Aug 2024 17:01:29 +0300 Subject: [PATCH 01/19] Introduce Valkey client overview - Created a new document that provides an overview of recommended Valkey clients across various programming languages. - Included mandatory features required for each client, such as Cluster Support and TLS/SSL Support. - Detailed advanced features supported by the clients, including: - Read from Replica - Exponential Backoff to Prevent Storm - Valkey Version Compatibility - PubSub State Restoration - Cluster Scan - Latency-Based Read from Replica - Client-Side Caching - Added feature comparison tables for each programming language (Python, JavaScript/Node.js, Java, Go, PHP, C#) to highlight the unique capabilities of each client. - Placeholder sections for Ruby and other languages marked as TODO for future updates. - References section includes a link to the official Valkey documentation. Signed-off-by: asafpamzn <97948347+asafpamzn@users.noreply.github.com> --- clients/ValkeyClients.md | 218 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 218 insertions(+) create mode 100644 clients/ValkeyClients.md diff --git a/clients/ValkeyClients.md b/clients/ValkeyClients.md new file mode 100644 index 00000000..6559c09e --- /dev/null +++ b/clients/ValkeyClients.md @@ -0,0 +1,218 @@ +--- +# 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 + +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 + +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. + +2. **Exponential Backoff to Prevent Storm** - A strategy used to prevent connection storms by progressively increasing the wait time between retries when attempting to reconnect to a Valkey server. This helps to reduce the load on the server during topology updates, periods of high demand or network instability. + +3. **Valkey Version Compatibility** - Indicates which versions of Valkey the client is compatible with. This is crucial for ensuring that the client can leverage the latest features and improvements in the Valkey server. + +4. **PubSub State Restoration** - The ability to restore the state of Pub/Sub (publish/subscribe) channels after a client reconnects. This feature ensures that clients can continue receiving messages after disconnections or topology updates such as adding or removing shards, for both legacy Pub/Sub and sharded Pub/Sub. The client will automatically resubscribe the connections to the new node. The advantage is that the application code is simplified, and doesn’t have to take care of resubscribing to new nodes during reconnects. + +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. This is achieved by storing metadata of the scanned slots and nodes within the GLIDE SCAN cursor and continuously updating the cluster topology. + +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. **Client Side Caching** - Valkey client-side caching is a feature that allows clients to cache the results of Redis 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. + + + +--- + +## Table of Contents + +- [Table of Contents](#table-of-contents) +- [Python](#python) + - [Feature Comparison Table](#feature-comparison-table) +- [JavaScript/Node.js](#javascriptnodejs) + - [Feature Comparison Table](#feature-comparison-table-1) +- [Java](#java) + - [Feature Comparison Table](#feature-comparison-table-2) +- [Go](#go) + - [Feature Comparison Table](#feature-comparison-table-3) +- [Ruby](#ruby) +- [PHP](#php) + - [Feature Comparison Table](#feature-comparison-table-4) +- [C#](#c) + - [Feature Comparison Table](#feature-comparison-table-5) +- [Other Languages](#other-languages) +- [References](#references) + +## Python + +- **valkey-glide** + - GitHub: [valkey-glide](https://github.com/valkey-io/valkey-glide/tree/main/python) + - Installation: `pip install valkey-glide` + - Description: 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, node.js and Python. + +- **valkey-py** + - GitHub: [valkey-py](https://github.com/valkey-io/valkey-py) + - Installation: `pip install valkey` + - Description: The Python interface to the Valkey key-value store. + + +### Feature Comparison Table +{: .no_toc } + +| Feature | valkey-glide | valkey-py | +|----------------------------------------------|:------------:|:---------:| +| **Read from replica** | Yes | Yes | +| **Exponential backoff to prevent storm** | Yes | Yes | +| **Valkey version compatibility** | 7.2 | 7.2 | +| **PubSub state restoration** | Yes | No | +| **Cluster Scan** | Yes | No | +| **Latency-Based Read from Replica** | No | No | +| **Client Side Caching** | No | No | + +## JavaScript/Node.js + +- **valkey-glide** + - GitHub: [valkey-glide](https://github.com/valkey-io/valkey-glide/tree/main/node) + - Installation: `npm install valkey-glide` + - Description: 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, node.js and Python. + +- **iovalkey** + - GitHub: [iovalkey](https://github.com/valkey-io/iovalkey) + - 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 +{: .no_toc } + +| Feature | valkey-glide | iovalkey | +|----------------------------------------------|:------------:|:---------:| +| **Read from replica** | Yes | Yes | +| **Exponential backoff to prevent storm** | Yes | Yes | +| **Valkey version compatibility** | 7.2 | 7.2 | +| **PubSub state restoration** | Yes | No | +| **Cluster Scan** | Yes | No | +| **Latency-Based Read from Replica** | No | No | +| **Client Side Caching** | No | No | + +## Java + +- **valkey-glide** + - GitHub: [valkey-glide](https://github.com/valkey-io/valkey-glide/tree/main/java) + - Installation: Available via Maven and Gradle + - Description: 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, node.js and Python. + +- **Valkey-Java** + - GitHub: [valkey-java](https://github.com/valkey-io/valkey-java) + - 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. + + +### Feature Comparison Table +{: .no_toc } + +| Feature | valkey-glide | valkey-java | +|----------------------------------------------|:------------:|:-----------:| +| **Read from replica** | Yes | No | +| **Exponential backoff to prevent storm** | Yes | Yes | +| **Valkey version compatibility** | 7.2 | 7.2 | +| **Cluster support** | Yes | Yes | +| **TLS/SSL support** | Yes | Yes | +| **PubSub state restoration** | Yes | No | +| **Cluster Scan** | Yes | No | +| **Latency-Based Read from Replica** | No | No | +| **Client Side Caching** | No | No | + + +## 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. + + +### Feature Comparison Table +{: .no_toc } + +| Feature | valkey-go | +|----------------------------------------------|:----------:| +| **Read from replica** | Yes | +| **Exponential backoff to prevent storm** | Yes | +| **Valkey version compatibility** | 7.2 | +| **Cluster support** | Yes | +| **TLS/SSL support** | Yes | +| **PubSub state restoration** | No | +| **Cluster Scan** | No | +| **Latency-Based Read from Replica** | No | +| **Client Side Caching** | No | + + + +## Ruby + +TODO + +## PHP + +- **Predis** + - GitHub: [Predis](https://github.com/predis/predis) + - Installation: `composer require predis/predis` + - Description: A flexible and feature-rich Valkey client for PHP. + +- **phpvalkey** + - GitHub: [phpredis](https://github.com/phpredis/phpredis) + - Installation: Install via PECL or compile from source + - Description: A PHP extension for Redis, offering high performance and a native API. + + +### Feature Comparison Table +{: .no_toc } + +| Feature | Predis | phpredis | +|----------------------------------------------|:-------:|:--------:| +| **Read from replica** | Yes | Yes | +| **Exponential backoff to prevent storm** | No | Yes | +| **Valkey version compatibility** | 7.2 | 7.2 | +| **Cluster support** | Yes | Yes | +| **TLS/SSL support** | Yes | Yes | +| **PubSub state restoration** | No | No | +| **Cluster Scan** | No | No | +| **Latency-Based Read from Replica** | No | No | +| **Client Side Caching** | No | No | + +## C# + +- **StackExchange.Redis** + - GitHub: [StackExchange.Redis](https://github.com/StackExchange/StackExchange.Redis) + - Installation: Available via NuGet + - Description: A high-performance Valkey client for .NET, maintained by StackExchange. + + +### Feature Comparison Table +{: .no_toc } + +| Feature | StackExchange.Valkey | +|----------------------------------------------|:--------------------:| +| **Read from replica** | Yes | +| **Exponential backoff to prevent storm** | Yes | +| **Valkey version compatibility** | 7.2 | +| **Cluster support** | Yes | +| **TLS/SSL support** | Yes | +| **PubSub state restoration** | No | +| **Cluster Scan** | No | +| **Latency-Based Read from Replica** | No | +| **Client Side Caching** | No | + +## Other Languages + +TBD + +## References + +- [Valkey Official Documentation](https://valkey.io/docs/) \ No newline at end of file From 64957929eaec4801352b85308eac10d12e4242e1 Mon Sep 17 00:00:00 2001 From: asafpamzn <97948347+asafpamzn@users.noreply.github.com> Date: Sun, 25 Aug 2024 12:14:04 +0300 Subject: [PATCH 02/19] Update clients/ValkeyClients.md Co-authored-by: Avi Fenesh <55848801+avifenesh@users.noreply.github.com> Signed-off-by: asafpamzn <97948347+asafpamzn@users.noreply.github.com> --- clients/ValkeyClients.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clients/ValkeyClients.md b/clients/ValkeyClients.md index 6559c09e..3d938f7a 100644 --- a/clients/ValkeyClients.md +++ b/clients/ValkeyClients.md @@ -5,7 +5,7 @@ Selecting the right client is a complex task, given that there are over 200 clie ## 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. +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. From 65e3a3ad4808addfb58eafd286a9507ab508e621 Mon Sep 17 00:00:00 2001 From: Roshan Khatri <117414976+roshkhatri@users.noreply.github.com> Date: Wed, 28 Aug 2024 00:59:22 -0700 Subject: [PATCH 03/19] Update cluster-slots to explain the deterministic ordering (#159) Update cluster-slots docs ref: https://github.com/valkey-io/valkey/pull/265 --------- Signed-off-by: Roshan Khatri Signed-off-by: Madelyn Olson Co-authored-by: Madelyn Olson Signed-off-by: asafpamzn <97948347+asafpamzn@users.noreply.github.com> --- commands/cluster-slots.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/commands/cluster-slots.md b/commands/cluster-slots.md index a09dde62..2babfe2d 100644 --- a/commands/cluster-slots.md +++ b/commands/cluster-slots.md @@ -34,8 +34,10 @@ Each nested result is: - ...continues until all replicas for this master are returned. Each result includes all active replicas of the master instance -for the listed slot range. Failed replicas are not returned. +for the listed slot range. Failed replicas are not returned. +The command response is deterministic across all nodes in a cluster, which means that if two nodes return the same response they have the same view of the cluster. +Primaries are ordered by the slots they serve and then replicas are ordered lexicographically by the node-id they were assigned by the cluster. The third nested reply is guaranteed to be the networking information of the master instance for the slot range. All networking information after the third nested reply are replicas of the master. From 21c71ebc8e356ae7b4c2fbc74ae2241d2892bba0 Mon Sep 17 00:00:00 2001 From: uriyage <78144248+uriyage@users.noreply.github.com> Date: Wed, 4 Sep 2024 03:05:31 +0300 Subject: [PATCH 04/19] Update threaded IO info (#165) Add documentation for the new `info stats` fields. --------- Signed-off-by: Uri Yagelnik Signed-off-by: asafpamzn <97948347+asafpamzn@users.noreply.github.com> --- commands/info.md | 8 ++++++-- wordlist | 2 ++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/commands/info.md b/commands/info.md index 3e63555f..9398a53e 100644 --- a/commands/info.md +++ b/commands/info.md @@ -535,8 +535,12 @@ Here is the meaning of all fields in the **stats** section: * `dump_payload_sanitizations`: Total number of dump payload deep integrity validations (see `sanitize-dump-payload` config). * `total_reads_processed`: Total number of read events processed * `total_writes_processed`: Total number of write events processed -* `io_threaded_reads_processed`: Number of read events processed by the main and I/O threads -* `io_threaded_writes_processed`: Number of write events processed by the main and I/O threads +* `io_threaded_reads_processed`: Number of read events processed by the I/O threads. +* `io_threaded_writes_processed`: Number of write events processed by the I/O threads. +* `io_threaded_total_prefetch_batches`: Indicate how many prefetch batches were executed in order to prefetch keys before executing commands. +* `io_threaded_total_prefetch_entries`: The total number of dict entries that were prefetched. Each batch can contain multiple entries, the ratio entries/batches indicates how many entries were prefetched per batch on average. +* `io_threaded_poll_processed`: Total poll system calls performed by the I/O threads. +* `io_threaded_freed_objects`: The total number of objects freed by the I/O threads. * `client_query_buffer_limit_disconnections`: Total number of disconnections due to client reaching query buffer limit * `client_output_buffer_limit_disconnections`: Total number of disconnections due to client reaching output buffer limit * `reply_buffer_shrinks`: Total number of output buffer shrinks diff --git a/wordlist b/wordlist index a1a54e22..c0e58881 100644 --- a/wordlist +++ b/wordlist @@ -600,6 +600,8 @@ pre-loaded pre-populated pre-sharding Predis +prefetch +prefetched prepend Prepend preprocessing From 2a74a77c33a727ba6782bc30ce85c44b5c53260c Mon Sep 17 00:00:00 2001 From: asafpamzn <97948347+asafpamzn@users.noreply.github.com> Date: Mon, 9 Sep 2024 16:40:32 +0300 Subject: [PATCH 05/19] Addressed comments from the first review. Signed-off-by: asafpamzn <97948347+asafpamzn@users.noreply.github.com> --- clients/ValkeyClients.md | 48 ++-------------------------------------- 1 file changed, 2 insertions(+), 46 deletions(-) diff --git a/clients/ValkeyClients.md b/clients/ValkeyClients.md index 3d938f7a..1c59e3ac 100644 --- a/clients/ValkeyClients.md +++ b/clients/ValkeyClients.md @@ -19,7 +19,7 @@ Selecting the right client is a complex task, given that there are over 200 clie 4. **PubSub State Restoration** - The ability to restore the state of Pub/Sub (publish/subscribe) channels after a client reconnects. This feature ensures that clients can continue receiving messages after disconnections or topology updates such as adding or removing shards, for both legacy Pub/Sub and sharded Pub/Sub. The client will automatically resubscribe the connections to the new node. The advantage is that the application code is simplified, and doesn’t have to take care of resubscribing to new nodes during reconnects. -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. This is achieved by storing metadata of the scanned slots and nodes within the GLIDE SCAN cursor and continuously updating the cluster topology. +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. @@ -40,13 +40,8 @@ Selecting the right client is a complex task, given that there are over 200 clie - [Feature Comparison Table](#feature-comparison-table-2) - [Go](#go) - [Feature Comparison Table](#feature-comparison-table-3) -- [Ruby](#ruby) - [PHP](#php) - [Feature Comparison Table](#feature-comparison-table-4) -- [C#](#c) - - [Feature Comparison Table](#feature-comparison-table-5) -- [Other Languages](#other-languages) -- [References](#references) ## Python @@ -121,8 +116,6 @@ Selecting the right client is a complex task, given that there are over 200 clie | **Read from replica** | Yes | No | | **Exponential backoff to prevent storm** | Yes | Yes | | **Valkey version compatibility** | 7.2 | 7.2 | -| **Cluster support** | Yes | Yes | -| **TLS/SSL support** | Yes | Yes | | **PubSub state restoration** | Yes | No | | **Cluster Scan** | Yes | No | | **Latency-Based Read from Replica** | No | No | @@ -145,8 +138,6 @@ Selecting the right client is a complex task, given that there are over 200 clie | **Read from replica** | Yes | | **Exponential backoff to prevent storm** | Yes | | **Valkey version compatibility** | 7.2 | -| **Cluster support** | Yes | -| **TLS/SSL support** | Yes | | **PubSub state restoration** | No | | **Cluster Scan** | No | | **Latency-Based Read from Replica** | No | @@ -154,10 +145,6 @@ Selecting the right client is a complex task, given that there are over 200 clie -## Ruby - -TODO - ## PHP - **Predis** @@ -165,7 +152,7 @@ TODO - Installation: `composer require predis/predis` - Description: A flexible and feature-rich Valkey client for PHP. -- **phpvalkey** +- **phpredis** - GitHub: [phpredis](https://github.com/phpredis/phpredis) - Installation: Install via PECL or compile from source - Description: A PHP extension for Redis, offering high performance and a native API. @@ -179,40 +166,9 @@ TODO | **Read from replica** | Yes | Yes | | **Exponential backoff to prevent storm** | No | Yes | | **Valkey version compatibility** | 7.2 | 7.2 | -| **Cluster support** | Yes | Yes | -| **TLS/SSL support** | Yes | Yes | | **PubSub state restoration** | No | No | | **Cluster Scan** | No | No | | **Latency-Based Read from Replica** | No | No | | **Client Side Caching** | No | No | -## C# - -- **StackExchange.Redis** - - GitHub: [StackExchange.Redis](https://github.com/StackExchange/StackExchange.Redis) - - Installation: Available via NuGet - - Description: A high-performance Valkey client for .NET, maintained by StackExchange. - - -### Feature Comparison Table -{: .no_toc } - -| Feature | StackExchange.Valkey | -|----------------------------------------------|:--------------------:| -| **Read from replica** | Yes | -| **Exponential backoff to prevent storm** | Yes | -| **Valkey version compatibility** | 7.2 | -| **Cluster support** | Yes | -| **TLS/SSL support** | Yes | -| **PubSub state restoration** | No | -| **Cluster Scan** | No | -| **Latency-Based Read from Replica** | No | -| **Client Side Caching** | No | - -## Other Languages - -TBD - -## References -- [Valkey Official Documentation](https://valkey.io/docs/) \ No newline at end of file From 43f4158643f0e5e1fea8a6fe00ad045e93c1cc51 Mon Sep 17 00:00:00 2001 From: asafpamzn <97948347+asafpamzn@users.noreply.github.com> Date: Mon, 9 Sep 2024 16:57:05 +0300 Subject: [PATCH 06/19] Addressed comments from the first review. Signed-off-by: asafpamzn <97948347+asafpamzn@users.noreply.github.com> --- clients/ValkeyClients.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/clients/ValkeyClients.md b/clients/ValkeyClients.md index 1c59e3ac..e07d4c40 100644 --- a/clients/ValkeyClients.md +++ b/clients/ValkeyClients.md @@ -48,7 +48,7 @@ Selecting the right client is a complex task, given that there are over 200 clie - **valkey-glide** - GitHub: [valkey-glide](https://github.com/valkey-io/valkey-glide/tree/main/python) - Installation: `pip install valkey-glide` - - Description: 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, node.js and Python. + - Description: 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, node.js and Python. - **valkey-py** - GitHub: [valkey-py](https://github.com/valkey-io/valkey-py) @@ -74,7 +74,7 @@ Selecting the right client is a complex task, given that there are over 200 clie - **valkey-glide** - GitHub: [valkey-glide](https://github.com/valkey-io/valkey-glide/tree/main/node) - Installation: `npm install valkey-glide` - - Description: 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, node.js and Python. + - Description: 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, node.js and Python. - **iovalkey** - GitHub: [iovalkey](https://github.com/valkey-io/iovalkey) @@ -100,7 +100,7 @@ Selecting the right client is a complex task, given that there are over 200 clie - **valkey-glide** - GitHub: [valkey-glide](https://github.com/valkey-io/valkey-glide/tree/main/java) - Installation: Available via Maven and Gradle - - Description: 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, node.js and Python. + - Description: 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, node.js and Python. - **Valkey-Java** - GitHub: [valkey-java](https://github.com/valkey-io/valkey-java) From 5b944ac4baccebab4f7b51e31aaafaf427efcc5a Mon Sep 17 00:00:00 2001 From: asafpamzn <97948347+asafpamzn@users.noreply.github.com> Date: Sun, 15 Sep 2024 17:22:09 +0300 Subject: [PATCH 07/19] Update clients/ValkeyClients.md Co-authored-by: Rueian Signed-off-by: asafpamzn <97948347+asafpamzn@users.noreply.github.com> --- clients/ValkeyClients.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/clients/ValkeyClients.md b/clients/ValkeyClients.md index e07d4c40..e9473e2b 100644 --- a/clients/ValkeyClients.md +++ b/clients/ValkeyClients.md @@ -136,12 +136,12 @@ Selecting the right client is a complex task, given that there are over 200 clie | Feature | valkey-go | |----------------------------------------------|:----------:| | **Read from replica** | Yes | -| **Exponential backoff to prevent storm** | Yes | +| **Exponential backoff to prevent storm** | No | | **Valkey version compatibility** | 7.2 | -| **PubSub state restoration** | No | +| **PubSub state restoration** | Yes | | **Cluster Scan** | No | | **Latency-Based Read from Replica** | No | -| **Client Side Caching** | No | +| **Client Side Caching** | Yes | From bc2edd9a2c7804edb978137f5da2f74546f65500 Mon Sep 17 00:00:00 2001 From: asafpamzn <97948347+asafpamzn@users.noreply.github.com> Date: Sun, 15 Sep 2024 18:29:56 +0300 Subject: [PATCH 08/19] Update code according to comments Signed-off-by: asafpamzn <97948347+asafpamzn@users.noreply.github.com> --- clients/ValkeyClients.md | 39 +++++++++++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/clients/ValkeyClients.md b/clients/ValkeyClients.md index e9473e2b..b1cecd17 100644 --- a/clients/ValkeyClients.md +++ b/clients/ValkeyClients.md @@ -13,7 +13,7 @@ Selecting the right client is a complex task, given that there are over 200 clie 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. -2. **Exponential Backoff to Prevent Storm** - A strategy used to prevent connection storms by progressively increasing the wait time between retries when attempting to reconnect to a Valkey server. This helps to reduce the load on the server during topology updates, periods of high demand or network instability. +2. **Smart Backoff to Prevent Connection Storm** - A strategy used to prevent connection storms by progressively updating the wait time between retries when attempting to reconnect to a Valkey server. This helps to reduce the load on the server during topology updates, periods of high demand or network instability. 3. **Valkey Version Compatibility** - Indicates which versions of Valkey the client is compatible with. This is crucial for ensuring that the client can leverage the latest features and improvements in the Valkey server. @@ -23,7 +23,14 @@ Selecting the right client is a complex task, given that there are over 200 clie 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. **Client Side Caching** - Valkey client-side caching is a feature that allows clients to cache the results of Redis 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. +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. + +9. **`CLIENT CAPA redirect` Support** - The `CLIENT CAPA redirect` feature was introduced in Valkey 8 to facilitate seamless upgrades without causing errors in standalone mode. When enabled, this feature allows the replica to redirect data access commands (both read and write operations) to the primary instance. This ensures uninterrupted service during the upgrade process. For more detailed information about this feature, please refer to the following link: https://github.com/valkey-io/valkey/pull/325 + +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. + @@ -62,12 +69,15 @@ Selecting the right client is a complex task, given that there are over 200 clie | Feature | valkey-glide | valkey-py | |----------------------------------------------|:------------:|:---------:| | **Read from replica** | Yes | Yes | -| **Exponential backoff to prevent storm** | Yes | Yes | +| **Smart Backoff to Prevent Connection Storm**| Yes | Yes | | **Valkey version compatibility** | 7.2 | 7.2 | | **PubSub state restoration** | Yes | No | | **Cluster Scan** | Yes | No | | **Latency-Based Read from Replica** | No | No | +| **AZ-Based Read from Replica** | No | No | | **Client Side Caching** | No | No | +| **`CLIENT CAPA redirect`** | No | No | +| **Persistent Connection Pool** | No | Yes | ## JavaScript/Node.js @@ -88,12 +98,15 @@ Selecting the right client is a complex task, given that there are over 200 clie | Feature | valkey-glide | iovalkey | |----------------------------------------------|:------------:|:---------:| | **Read from replica** | Yes | Yes | -| **Exponential backoff to prevent storm** | Yes | Yes | +| **Smart Backoff to Prevent Connection Storm**| Yes | Yes | | **Valkey version compatibility** | 7.2 | 7.2 | | **PubSub state restoration** | Yes | No | | **Cluster Scan** | Yes | No | | **Latency-Based Read from Replica** | No | No | +| **AZ-Based Read from Replica** | No | No | | **Client Side Caching** | No | No | +| **`CLIENT CAPA redirect`** | No | No | +| **Persistent Connection Pool** | No | Yes | ## Java @@ -114,12 +127,15 @@ Selecting the right client is a complex task, given that there are over 200 clie | Feature | valkey-glide | valkey-java | |----------------------------------------------|:------------:|:-----------:| | **Read from replica** | Yes | No | -| **Exponential backoff to prevent storm** | Yes | Yes | +| **Smart Backoff to Prevent Connection Storm**| Yes | Yes | | **Valkey version compatibility** | 7.2 | 7.2 | | **PubSub state restoration** | Yes | No | | **Cluster Scan** | Yes | No | | **Latency-Based Read from Replica** | No | No | +| **AZ-Based Read from Replica** | No | No | | **Client Side Caching** | No | No | +| **`CLIENT CAPA redirect`** | No | No | +| **Persistent Connection Pool** | No | Yes | ## Go @@ -136,14 +152,15 @@ Selecting the right client is a complex task, given that there are over 200 clie | Feature | valkey-go | |----------------------------------------------|:----------:| | **Read from replica** | Yes | -| **Exponential backoff to prevent storm** | No | +| **Smart Backoff to Prevent Connection Storm**| Yes | | **Valkey version compatibility** | 7.2 | | **PubSub state restoration** | Yes | | **Cluster Scan** | No | | **Latency-Based Read from Replica** | No | +| **AZ-Based Read from Replica** | No | | **Client Side Caching** | Yes | - - +| **`CLIENT CAPA redirect`** | No | +| **Persistent Connection Pool** | Yes | ## PHP @@ -164,11 +181,13 @@ Selecting the right client is a complex task, given that there are over 200 clie | Feature | Predis | phpredis | |----------------------------------------------|:-------:|:--------:| | **Read from replica** | Yes | Yes | -| **Exponential backoff to prevent storm** | No | Yes | +| **Smart Backoff to Prevent Connection Storm**| No | Yes | | **Valkey version compatibility** | 7.2 | 7.2 | | **PubSub state restoration** | No | No | | **Cluster Scan** | No | No | | **Latency-Based Read from Replica** | No | No | +| **AZ-Based Read from Replica** | No | No | | **Client Side Caching** | No | No | - +| **`CLIENT CAPA redirect`** | No | No | +| **Persistent Connection Pool** | No | Yes | From 16d3a15fb373d50825426f5a23d248a349bf45c5 Mon Sep 17 00:00:00 2001 From: asafpamzn <97948347+asafpamzn@users.noreply.github.com> Date: Sun, 15 Sep 2024 18:47:32 +0300 Subject: [PATCH 09/19] update TOC Signed-off-by: asafpamzn <97948347+asafpamzn@users.noreply.github.com> --- clients/ValkeyClients.md | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/clients/ValkeyClients.md b/clients/ValkeyClients.md index b1cecd17..65240b7b 100644 --- a/clients/ValkeyClients.md +++ b/clients/ValkeyClients.md @@ -40,15 +40,11 @@ Selecting the right client is a complex task, given that there are over 200 clie - [Table of Contents](#table-of-contents) - [Python](#python) - - [Feature Comparison Table](#feature-comparison-table) - [JavaScript/Node.js](#javascriptnodejs) - - [Feature Comparison Table](#feature-comparison-table-1) - [Java](#java) - - [Feature Comparison Table](#feature-comparison-table-2) - [Go](#go) - - [Feature Comparison Table](#feature-comparison-table-3) - [PHP](#php) - - [Feature Comparison Table](#feature-comparison-table-4) + ## Python @@ -62,9 +58,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 -{: .no_toc } | Feature | valkey-glide | valkey-py | |----------------------------------------------|:------------:|:---------:| @@ -91,9 +85,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 -{: .no_toc } | Feature | valkey-glide | iovalkey | |----------------------------------------------|:------------:|:---------:| @@ -122,7 +114,6 @@ Selecting the right client is a complex task, given that there are over 200 clie ### Feature Comparison Table -{: .no_toc } | Feature | valkey-glide | valkey-java | |----------------------------------------------|:------------:|:-----------:| @@ -147,7 +138,6 @@ Selecting the right client is a complex task, given that there are over 200 clie ### Feature Comparison Table -{: .no_toc } | Feature | valkey-go | |----------------------------------------------|:----------:| @@ -176,7 +166,6 @@ Selecting the right client is a complex task, given that there are over 200 clie ### Feature Comparison Table -{: .no_toc } | Feature | Predis | phpredis | |----------------------------------------------|:-------:|:--------:| From 6c7983496e1529fa76bbf04aa783e48df187e8a0 Mon Sep 17 00:00:00 2001 From: asafpamzn <97948347+asafpamzn@users.noreply.github.com> Date: Thu, 26 Sep 2024 16:43:20 +0300 Subject: [PATCH 10/19] Update ValkeyClients.md Signed-off-by: asafpamzn <97948347+asafpamzn@users.noreply.github.com> --- clients/ValkeyClients.md | 54 ++++++++++++++++++---------------------- 1 file changed, 24 insertions(+), 30 deletions(-) diff --git a/clients/ValkeyClients.md b/clients/ValkeyClients.md index 65240b7b..5a124ac9 100644 --- a/clients/ValkeyClients.md +++ b/clients/ValkeyClients.md @@ -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. @@ -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. @@ -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) @@ -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` @@ -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 | |----------------------------------------------|:------------:|:---------:| @@ -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` @@ -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 | |----------------------------------------------|:------------:|:---------:| @@ -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) @@ -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. - -### Feature Comparison Table +**Feature Comparison Table:** | Feature | valkey-glide | valkey-java | |----------------------------------------------|:------------:|:-----------:| @@ -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. - -### Feature Comparison Table +**Feature Comparison Table:** | Feature | valkey-go | |----------------------------------------------|:----------:| @@ -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` @@ -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. - -### Feature Comparison Table +**Feature Comparison Table:** | Feature | Predis | phpredis | |----------------------------------------------|:-------:|:--------:| From c1fb1a6ea6461109f4ce728b81fb04f256220f49 Mon Sep 17 00:00:00 2001 From: lior sventitzky Date: Sun, 17 Nov 2024 14:28:21 +0000 Subject: [PATCH 11/19] updated json client files and added page to docs topics Signed-off-by: lior sventitzky --- clients/go/github.com/valkey/valkey-go.json | 15 ++++ clients/java/github.com/AWS/valkey-GLIDE.json | 15 ++++ .../java/github.com/valkey/valkey-java.json | 15 ++++ .../github.com/AWS/GLIDE-for-Redis.json | 4 - .../nodejs/github.com/AWS/valkey-GLIDE.json | 15 ++++ .../nodejs/github.com/valkey/iovalkey.json | 15 ++++ clients/php/github.com/nrk/predis.json | 15 +++- clients/php/github.com/phpredis/phpredis.json | 15 +++- .../github.com/AWS/GLIDE-for-Redis.json | 4 - .../python/github.com/AWS/valkey-GLIDE.json | 15 ++++ .../python/github.com/valkey/valkey-py.json | 15 ++++ topics/index.md | 1 + .../valkey-clients.md | 81 ++----------------- 13 files changed, 137 insertions(+), 88 deletions(-) create mode 100644 clients/go/github.com/valkey/valkey-go.json create mode 100644 clients/java/github.com/AWS/valkey-GLIDE.json create mode 100644 clients/java/github.com/valkey/valkey-java.json delete mode 100644 clients/nodejs/github.com/AWS/GLIDE-for-Redis.json create mode 100644 clients/nodejs/github.com/AWS/valkey-GLIDE.json create mode 100644 clients/nodejs/github.com/valkey/iovalkey.json delete mode 100644 clients/python/github.com/AWS/GLIDE-for-Redis.json create mode 100644 clients/python/github.com/AWS/valkey-GLIDE.json create mode 100644 clients/python/github.com/valkey/valkey-py.json rename clients/ValkeyClients.md => topics/valkey-clients.md (64%) diff --git a/clients/go/github.com/valkey/valkey-go.json b/clients/go/github.com/valkey/valkey-go.json new file mode 100644 index 00000000..e1bce0f1 --- /dev/null +++ b/clients/go/github.com/valkey/valkey-go.json @@ -0,0 +1,15 @@ +{ + "name": "valkey-go", + "description": "A fast Golang Valkey client that does auto pipelining and supports server-assisted client-side caching.", + "language":"Go", + "read_from_replica": true, + "smart_backoff_to_prevent_connection_storm": true, + "valkey_version_compatibility": 7.2, + "pubsub_state_restoration": true, + "cluster_scan": false, + "latency_based_read_from_replica": false, + "AZ_based_read_from_replica": false, + "client_side_caching": true, + "client_capa_redirect": false, + "persistent_connection_pool": true +} diff --git a/clients/java/github.com/AWS/valkey-GLIDE.json b/clients/java/github.com/AWS/valkey-GLIDE.json new file mode 100644 index 00000000..05777d99 --- /dev/null +++ b/clients/java/github.com/AWS/valkey-GLIDE.json @@ -0,0 +1,15 @@ +{ + "name": "Valkey GLIDE", + "description": "General Language Independent Driver for the Enterprise (GLIDE) for Redis is an advanced multi-language Redis client that is feature rich, highly performant, and built for reliability and operational stability. GLIDE for Redis is supported by AWS.", + "language":"Java", + "read_from_replica": true, + "smart_backoff_to_prevent_connection_storm": true, + "valkey_version_compatibility": 7.2, + "pubsub_state_restoration": true, + "cluster_scan": true, + "latency_based_read_from_replica": false, + "AZ_based_read_from_replica": false, + "client_side_caching": false, + "client_capa_redirect": false, + "persistent_connection_pool": false +} diff --git a/clients/java/github.com/valkey/valkey-java.json b/clients/java/github.com/valkey/valkey-java.json new file mode 100644 index 00000000..82d38ad3 --- /dev/null +++ b/clients/java/github.com/valkey/valkey-java.json @@ -0,0 +1,15 @@ +{ + "name": "valkey-java", + "description": "valkey-java is Valkey's Java client, derived from Jedis fork, dedicated to maintaining simplicity and high performance.", + "language":"Java", + "read_from_replica": false, + "smart_backoff_to_prevent_connection_storm": true, + "valkey_version_compatibility": 7.2, + "pubsub_state_restoration": false, + "cluster_scan": false, + "latency_based_read_from_replica": false, + "AZ_based_read_from_replica": false, + "client_side_caching": false, + "client_capa_redirect": false, + "persistent_connection_pool": true +} diff --git a/clients/nodejs/github.com/AWS/GLIDE-for-Redis.json b/clients/nodejs/github.com/AWS/GLIDE-for-Redis.json deleted file mode 100644 index cfb35fce..00000000 --- a/clients/nodejs/github.com/AWS/GLIDE-for-Redis.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "GLIDE for Redis", - "description": "General Language Independent Driver for the Enterprise (GLIDE) for Redis is an advanced multi-language Redis client that is feature rich, highly performant, and built for reliability and operational stability. GLIDE for Redis is supported by AWS." -} diff --git a/clients/nodejs/github.com/AWS/valkey-GLIDE.json b/clients/nodejs/github.com/AWS/valkey-GLIDE.json new file mode 100644 index 00000000..928c8564 --- /dev/null +++ b/clients/nodejs/github.com/AWS/valkey-GLIDE.json @@ -0,0 +1,15 @@ +{ + "name": "Valkey GLIDE", + "description": "General Language Independent Driver for the Enterprise (GLIDE) for Redis is an advanced multi-language Redis client that is feature rich, highly performant, and built for reliability and operational stability. GLIDE for Redis is supported by AWS.", + "language":"Node.js", + "read_from_replica": true, + "smart_backoff_to_prevent_connection_storm": true, + "valkey_version_compatibility": 7.2, + "pubsub_state_restoration": true, + "cluster_scan": true, + "latency_based_read_from_replica": false, + "AZ_based_read_from_replica": false, + "client_side_caching": false, + "client_capa_redirect": false, + "persistent_connection_pool": false +} diff --git a/clients/nodejs/github.com/valkey/iovalkey.json b/clients/nodejs/github.com/valkey/iovalkey.json new file mode 100644 index 00000000..1be92281 --- /dev/null +++ b/clients/nodejs/github.com/valkey/iovalkey.json @@ -0,0 +1,15 @@ +{ + "name": "iovalkey", + "description": "A robust, performance-focused and full-featured Redis client for Node.js.", + "language":"Node.js", + "read_from_replica": true, + "smart_backoff_to_prevent_connection_storm": true, + "valkey_version_compatibility": 7.2, + "pubsub_state_restoration": false, + "cluster_scan": false, + "latency_based_read_from_replica": false, + "AZ_based_read_from_replica": false, + "client_side_caching": false, + "client_capa_redirect": false, + "persistent_connection_pool": true +} \ No newline at end of file diff --git a/clients/php/github.com/nrk/predis.json b/clients/php/github.com/nrk/predis.json index 991cf5c4..bf7bf8ca 100644 --- a/clients/php/github.com/nrk/predis.json +++ b/clients/php/github.com/nrk/predis.json @@ -1,8 +1,19 @@ { "name": "Predis", - "description": "Mature and supported", + "description": "A flexible and feature-complete Redis client for PHP.", "recommended": true, "twitter": [ "JoL1hAHN" - ] + ], + "language":"PHP", + "read_from_replica": true, + "smart_backoff_to_prevent_connection_storm": true, + "valkey_version_compatibility": 7.2, + "pubsub_state_restoration": false, + "cluster_scan": false, + "latency_based_read_from_replica": false, + "AZ_based_read_from_replica": false, + "client_side_caching": true, + "client_capa_redirect": false, + "persistent_connection_pool": false } \ No newline at end of file diff --git a/clients/php/github.com/phpredis/phpredis.json b/clients/php/github.com/phpredis/phpredis.json index 89d7fdfe..c5687aff 100644 --- a/clients/php/github.com/phpredis/phpredis.json +++ b/clients/php/github.com/phpredis/phpredis.json @@ -1,10 +1,21 @@ { "name": "phpredis", - "description": "This is a client written in C as a PHP module.", + "description": " A PHP extension for Redis, offering high performance and a native API.", "recommended": true, "twitter": [ "grumi78", "yowgi", "yatsukhnenko" - ] + ], + "language":"PHP", + "read_from_replica": true, + "smart_backoff_to_prevent_connection_storm": true, + "valkey_version_compatibility": 7.2, + "pubsub_state_restoration": false, + "cluster_scan": false, + "latency_based_read_from_replica": false, + "AZ_based_read_from_replica": false, + "client_side_caching": true, + "client_capa_redirect": false, + "persistent_connection_pool": true } \ No newline at end of file diff --git a/clients/python/github.com/AWS/GLIDE-for-Redis.json b/clients/python/github.com/AWS/GLIDE-for-Redis.json deleted file mode 100644 index cfb35fce..00000000 --- a/clients/python/github.com/AWS/GLIDE-for-Redis.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "GLIDE for Redis", - "description": "General Language Independent Driver for the Enterprise (GLIDE) for Redis is an advanced multi-language Redis client that is feature rich, highly performant, and built for reliability and operational stability. GLIDE for Redis is supported by AWS." -} diff --git a/clients/python/github.com/AWS/valkey-GLIDE.json b/clients/python/github.com/AWS/valkey-GLIDE.json new file mode 100644 index 00000000..6fbe1ad9 --- /dev/null +++ b/clients/python/github.com/AWS/valkey-GLIDE.json @@ -0,0 +1,15 @@ +{ + "name": "Valkey GLIDE", + "description": "General Language Independent Driver for the Enterprise (GLIDE) for Redis is an advanced multi-language Redis client that is feature rich, highly performant, and built for reliability and operational stability. GLIDE for Redis is supported by AWS.", + "language":"Python", + "read_from_replica": true, + "smart_backoff_to_prevent_connection_storm": true, + "valkey_version_compatibility": 7.2, + "pubsub_state_restoration": true, + "cluster_scan": true, + "latency_based_read_from_replica": false, + "AZ_based_read_from_replica": false, + "client_side_caching": false, + "client_capa_redirect": false, + "persistent_connection_pool": false +} diff --git a/clients/python/github.com/valkey/valkey-py.json b/clients/python/github.com/valkey/valkey-py.json new file mode 100644 index 00000000..1e348604 --- /dev/null +++ b/clients/python/github.com/valkey/valkey-py.json @@ -0,0 +1,15 @@ +{ + "name": "valkey-py", + "description": "The Python interface to the Valkey key-value store.", + "language":"Python", + "read_from_replica": true, + "smart_backoff_to_prevent_connection_storm": true, + "valkey_version_compatibility": 7.2, + "pubsub_state_restoration": false, + "cluster_scan": false, + "latency_based_read_from_replica": false, + "AZ_based_read_from_replica": false, + "client_side_caching": false, + "client_capa_redirect": false, + "persistent_connection_pool": true +} diff --git a/topics/index.md b/topics/index.md index 8d478c66..6e17318c 100644 --- a/topics/index.md +++ b/topics/index.md @@ -24,6 +24,7 @@ Programming with Valkey * [Client side caching](client-side-caching.md): How a client can be notified by the server when a key has changed. * [Keyspace notifications](notifications.md): Get notifications of keyspace events via Pub/Sub. * [Protocol specification](protocol.md): The client-server protocol, for client authors. +* [Valkey clients](valkey-clients.md): An overview of recommended Valkey clients and their features. Server-side scripting in Valkey --- diff --git a/clients/ValkeyClients.md b/topics/valkey-clients.md similarity index 64% rename from clients/ValkeyClients.md rename to topics/valkey-clients.md index 5a124ac9..749e38c5 100644 --- a/clients/ValkeyClients.md +++ b/topics/valkey-clients.md @@ -1,6 +1,9 @@ --- -Valkey Clients -====== +title: "Valkey Clients" +linkTitle: "Valkey Clients" +description: Overview of Valkey clients and features +--- + 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 @@ -54,20 +57,6 @@ Python - Installation: `pip install valkey` - Description: The Python interface to the Valkey key-value store. -**Feature Comparison Table:** - -| Feature | valkey-glide | valkey-py | -|----------------------------------------------|:------------:|:---------:| -| **Read from replica** | Yes | Yes | -| **Smart Backoff to Prevent Connection Storm**| Yes | Yes | -| **Valkey version compatibility** | 7.2 | 7.2 | -| **PubSub state restoration** | Yes | No | -| **Cluster Scan** | Yes | No | -| **Latency-Based Read from Replica** | No | No | -| **AZ-Based Read from Replica** | No | No | -| **Client Side Caching** | No | No | -| **`CLIENT CAPA redirect`** | No | No | -| **Persistent Connection Pool** | No | Yes | JavaScript/Node.js ---- @@ -81,21 +70,6 @@ JavaScript/Node.js - 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 | valkey-glide | iovalkey | -|----------------------------------------------|:------------:|:---------:| -| **Read from replica** | Yes | Yes | -| **Smart Backoff to Prevent Connection Storm**| Yes | Yes | -| **Valkey version compatibility** | 7.2 | 7.2 | -| **PubSub state restoration** | Yes | No | -| **Cluster Scan** | Yes | No | -| **Latency-Based Read from Replica** | No | No | -| **AZ-Based Read from Replica** | No | No | -| **Client Side Caching** | No | No | -| **`CLIENT CAPA redirect`** | No | No | -| **Persistent Connection Pool** | No | Yes | - Java ---- @@ -109,21 +83,6 @@ Java - 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. -**Feature Comparison Table:** - -| Feature | valkey-glide | valkey-java | -|----------------------------------------------|:------------:|:-----------:| -| **Read from replica** | Yes | No | -| **Smart Backoff to Prevent Connection Storm**| Yes | Yes | -| **Valkey version compatibility** | 7.2 | 7.2 | -| **PubSub state restoration** | Yes | No | -| **Cluster Scan** | Yes | No | -| **Latency-Based Read from Replica** | No | No | -| **AZ-Based Read from Replica** | No | No | -| **Client Side Caching** | No | No | -| **`CLIENT CAPA redirect`** | No | No | -| **Persistent Connection Pool** | No | Yes | - Go ----- @@ -132,20 +91,6 @@ Go - Installation: TBD - Description: A fast Golang Valkey client that does auto pipelining and supports server-assisted client-side caching. -**Feature Comparison Table:** - -| Feature | valkey-go | -|----------------------------------------------|:----------:| -| **Read from replica** | Yes | -| **Smart Backoff to Prevent Connection Storm**| Yes | -| **Valkey version compatibility** | 7.2 | -| **PubSub state restoration** | Yes | -| **Cluster Scan** | No | -| **Latency-Based Read from Replica** | No | -| **AZ-Based Read from Replica** | No | -| **Client Side Caching** | Yes | -| **`CLIENT CAPA redirect`** | No | -| **Persistent Connection Pool** | Yes | PHP ---- @@ -158,19 +103,3 @@ PHP - GitHub: [phpredis](https://github.com/phpredis/phpredis) - Installation: Install via PECL or compile from source - Description: A PHP extension for Redis, offering high performance and a native API. - -**Feature Comparison Table:** - -| Feature | Predis | phpredis | -|----------------------------------------------|:-------:|:--------:| -| **Read from replica** | Yes | Yes | -| **Smart Backoff to Prevent Connection Storm**| No | Yes | -| **Valkey version compatibility** | 7.2 | 7.2 | -| **PubSub state restoration** | No | No | -| **Cluster Scan** | No | No | -| **Latency-Based Read from Replica** | No | No | -| **AZ-Based Read from Replica** | No | No | -| **Client Side Caching** | No | No | -| **`CLIENT CAPA redirect`** | No | No | -| **Persistent Connection Pool** | No | Yes | - From a2d5dd8d3c6e63c5049003318e40d8e467969db6 Mon Sep 17 00:00:00 2001 From: lior sventitzky Date: Thu, 28 Nov 2024 16:02:13 +0000 Subject: [PATCH 12/19] changed file name, fixed page and jsons according to comments Signed-off-by: lior sventitzky --- .../{AWS => valkey}/valkey-GLIDE.json | 2 +- .../java/github.com/valkey/valkey-java.json | 2 +- .../{AWS => valkey}/valkey-GLIDE.json | 2 +- .../{AWS => valkey}/valkey-GLIDE.json | 2 +- topics/{valkey-clients.md => client-list.md} | 37 +++++++++++++++---- topics/index.md | 2 +- 6 files changed, 35 insertions(+), 12 deletions(-) rename clients/java/github.com/{AWS => valkey}/valkey-GLIDE.json (62%) rename clients/nodejs/github.com/{AWS => valkey}/valkey-GLIDE.json (62%) rename clients/python/github.com/{AWS => valkey}/valkey-GLIDE.json (62%) rename topics/{valkey-clients.md => client-list.md} (89%) diff --git a/clients/java/github.com/AWS/valkey-GLIDE.json b/clients/java/github.com/valkey/valkey-GLIDE.json similarity index 62% rename from clients/java/github.com/AWS/valkey-GLIDE.json rename to clients/java/github.com/valkey/valkey-GLIDE.json index 2657c9a2..ebd11501 100644 --- a/clients/java/github.com/AWS/valkey-GLIDE.json +++ b/clients/java/github.com/valkey/valkey-GLIDE.json @@ -1,6 +1,6 @@ { "name": "Valkey GLIDE", - "description": "General Language Independent Driver for the Enterprise (GLIDE) for Redis is an advanced multi-language Redis client that is feature rich, highly performant, and built for reliability and operational stability. GLIDE for Redis is supported by AWS.", + "description": "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.", "language":"Java", "read_from_replica": true, "smart_backoff_to_prevent_connection_storm": true, diff --git a/clients/java/github.com/valkey/valkey-java.json b/clients/java/github.com/valkey/valkey-java.json index 1dcd9395..7d068ab9 100644 --- a/clients/java/github.com/valkey/valkey-java.json +++ b/clients/java/github.com/valkey/valkey-java.json @@ -1,6 +1,6 @@ { "name": "valkey-java", - "description": "valkey-java is Valkey's Java client, derived from Jedis fork, dedicated to maintaining simplicity and high performance.", + "description": "valkey-java is Valkey's Java client, dedicated to maintaining simplicity and high performance.", "language":"Java", "read_from_replica": false, "smart_backoff_to_prevent_connection_storm": true, diff --git a/clients/nodejs/github.com/AWS/valkey-GLIDE.json b/clients/nodejs/github.com/valkey/valkey-GLIDE.json similarity index 62% rename from clients/nodejs/github.com/AWS/valkey-GLIDE.json rename to clients/nodejs/github.com/valkey/valkey-GLIDE.json index cb4314f9..a36c39ee 100644 --- a/clients/nodejs/github.com/AWS/valkey-GLIDE.json +++ b/clients/nodejs/github.com/valkey/valkey-GLIDE.json @@ -1,6 +1,6 @@ { "name": "Valkey GLIDE", - "description": "General Language Independent Driver for the Enterprise (GLIDE) for Redis is an advanced multi-language Redis client that is feature rich, highly performant, and built for reliability and operational stability. GLIDE for Redis is supported by AWS.", + "description": "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.", "language":"Node.js", "read_from_replica": true, "smart_backoff_to_prevent_connection_storm": true, diff --git a/clients/python/github.com/AWS/valkey-GLIDE.json b/clients/python/github.com/valkey/valkey-GLIDE.json similarity index 62% rename from clients/python/github.com/AWS/valkey-GLIDE.json rename to clients/python/github.com/valkey/valkey-GLIDE.json index ad4bbfea..3e8b94e6 100644 --- a/clients/python/github.com/AWS/valkey-GLIDE.json +++ b/clients/python/github.com/valkey/valkey-GLIDE.json @@ -1,6 +1,6 @@ { "name": "Valkey GLIDE", - "description": "General Language Independent Driver for the Enterprise (GLIDE) for Redis is an advanced multi-language Redis client that is feature rich, highly performant, and built for reliability and operational stability. GLIDE for Redis is supported by AWS.", + "description": "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. ", "language":"Python", "read_from_replica": true, "smart_backoff_to_prevent_connection_storm": true, diff --git a/topics/valkey-clients.md b/topics/client-list.md similarity index 89% rename from topics/valkey-clients.md rename to topics/client-list.md index 749e38c5..4591eadd 100644 --- a/topics/valkey-clients.md +++ b/topics/client-list.md @@ -1,10 +1,9 @@ --- -title: "Valkey Clients" -linkTitle: "Valkey Clients" +title: "Client list" description: Overview of Valkey clients and features --- -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. +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, a table of advanced features supported by the respective clients is provided, highlighting the unique advantages of one client over another. Mandatory Features Overview ---- @@ -75,20 +74,44 @@ Java - **valkey-glide** - GitHub: [valkey-glide](https://github.com/valkey-io/valkey-glide/tree/main/java) - - Installation: Available via Maven and Gradle + - Installation: + + Maven - + ``` + + io.valkey + valkey-glide + 1.2.0 + + ``` + Gradle - + `implementation 'io.valkey:valkey-glide:1.2.0'` + + - Description: 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, node.js and Python. - **Valkey-Java** - GitHub: [valkey-java](https://github.com/valkey-io/valkey-java) - - 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. + - Installation: + + Maven - + ``` + + io.valkey + valkey-java + 5.3.0 + + ``` + Gradle - + `implementation 'io.valkey:valkey-java:5.3.0'` + - Description: valkey-java is Valkey's Java client, dedicated to maintaining simplicity and high performance. Go ----- - **valkey-go** - GitHub: [go-valkey-go](https://github.com/valkey-io/valkey-go) - - Installation: TBD + - Installation: `go get github.com/valkey-io/valkey-go` - Description: A fast Golang Valkey client that does auto pipelining and supports server-assisted client-side caching. diff --git a/topics/index.md b/topics/index.md index 6e17318c..43c91ddd 100644 --- a/topics/index.md +++ b/topics/index.md @@ -24,7 +24,7 @@ Programming with Valkey * [Client side caching](client-side-caching.md): How a client can be notified by the server when a key has changed. * [Keyspace notifications](notifications.md): Get notifications of keyspace events via Pub/Sub. * [Protocol specification](protocol.md): The client-server protocol, for client authors. -* [Valkey clients](valkey-clients.md): An overview of recommended Valkey clients and their features. +* [Client list](client-list.md): An overview of recommended Valkey clients and their features. Server-side scripting in Valkey --- From 7d83ed87bf3997f568b537f5d87bdc47c9db25a1 Mon Sep 17 00:00:00 2001 From: lior sventitzky Date: Sun, 1 Dec 2024 17:48:34 +0000 Subject: [PATCH 13/19] removed client list from markdown and moved content to json files Signed-off-by: lior sventitzky --- clients/go/github.com/valkey/valkey-go.json | 2 + .../java/github.com/valkey/valkey-GLIDE.json | 14 ++- .../java/github.com/valkey/valkey-java.json | 12 +++ .../nodejs/github.com/valkey/iovalkey.json | 4 +- .../github.com/valkey/valkey-GLIDE.json | 6 +- clients/php/github.com/nrk/predis.json | 2 + clients/php/github.com/phpredis/phpredis.json | 2 + .../github.com/valkey/valkey-GLIDE.json | 4 +- .../python/github.com/valkey/valkey-py.json | 2 + topics/client-list.md | 93 ------------------- 10 files changed, 43 insertions(+), 98 deletions(-) diff --git a/clients/go/github.com/valkey/valkey-go.json b/clients/go/github.com/valkey/valkey-go.json index e9afd8fe..3e420afa 100644 --- a/clients/go/github.com/valkey/valkey-go.json +++ b/clients/go/github.com/valkey/valkey-go.json @@ -1,6 +1,8 @@ { "name": "valkey-go", "description": "A fast Golang Valkey client that does auto pipelining and supports server-assisted client-side caching.", + "github":"https://github.com/valkey-io/valkey-go", + "installation": "go get github.com/valkey-io/valkey-go", "language":"Go", "read_from_replica": true, "smart_backoff_to_prevent_connection_storm": true, diff --git a/clients/java/github.com/valkey/valkey-GLIDE.json b/clients/java/github.com/valkey/valkey-GLIDE.json index ebd11501..b2255ced 100644 --- a/clients/java/github.com/valkey/valkey-GLIDE.json +++ b/clients/java/github.com/valkey/valkey-GLIDE.json @@ -1,6 +1,18 @@ { "name": "Valkey GLIDE", - "description": "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.", + "description": "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, node.js and Python.", + "github":"https://github.com/valkey-io/valkey-glide/tree/main/java", + "installation": [ + { + "type": "Maven", + "command": "\n io.valkey\n valkey-glide\n 1.2.0\n" + }, + { + "type": "Gradle", + "command":"implementation 'io.valkey:valkey-glide:1.2.0" + + } + ], "language":"Java", "read_from_replica": true, "smart_backoff_to_prevent_connection_storm": true, diff --git a/clients/java/github.com/valkey/valkey-java.json b/clients/java/github.com/valkey/valkey-java.json index 7d068ab9..278e74a6 100644 --- a/clients/java/github.com/valkey/valkey-java.json +++ b/clients/java/github.com/valkey/valkey-java.json @@ -1,6 +1,18 @@ { "name": "valkey-java", "description": "valkey-java is Valkey's Java client, dedicated to maintaining simplicity and high performance.", + "github":"https://github.com/valkey-io/valkey-java", + "installation": [ + { + "type": "Maven", + "command": "\n io.valkey\n valkey-java\n 5.3.0\n" + }, + { + "type": "Gradle", + "command":"implementation 'io.valkey:valkey-java:5.3.0'" + + } + ], "language":"Java", "read_from_replica": false, "smart_backoff_to_prevent_connection_storm": true, diff --git a/clients/nodejs/github.com/valkey/iovalkey.json b/clients/nodejs/github.com/valkey/iovalkey.json index e829cc2b..b5c9aa85 100644 --- a/clients/nodejs/github.com/valkey/iovalkey.json +++ b/clients/nodejs/github.com/valkey/iovalkey.json @@ -1,7 +1,9 @@ { "name": "iovalkey", "description": "A robust, performance-focused and full-featured Redis client for Node.js.", - "language":"Node.js", + "github":"https://github.com/valkey-io/iovalkey", + "installation": "npm install iovalkey", + "language":"JavaScript/Node.js", "read_from_replica": true, "smart_backoff_to_prevent_connection_storm": true, "valkey_version_compatibility": "7.2", diff --git a/clients/nodejs/github.com/valkey/valkey-GLIDE.json b/clients/nodejs/github.com/valkey/valkey-GLIDE.json index a36c39ee..707b8c15 100644 --- a/clients/nodejs/github.com/valkey/valkey-GLIDE.json +++ b/clients/nodejs/github.com/valkey/valkey-GLIDE.json @@ -1,7 +1,9 @@ { "name": "Valkey GLIDE", - "description": "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.", - "language":"Node.js", + "description": "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, node.js and Python.", + "github":"https://github.com/valkey-io/valkey-glide/tree/main/node", + "installation": "npm install valkey-glide", + "language":"JavaScript/Node.js", "read_from_replica": true, "smart_backoff_to_prevent_connection_storm": true, "valkey_version_compatibility": "8.0", diff --git a/clients/php/github.com/nrk/predis.json b/clients/php/github.com/nrk/predis.json index a7de7ff7..6e19add8 100644 --- a/clients/php/github.com/nrk/predis.json +++ b/clients/php/github.com/nrk/predis.json @@ -5,6 +5,8 @@ "twitter": [ "JoL1hAHN" ], + "github":"https://github.com/predis/predis", + "installation": "pecl install redis", "language":"PHP", "read_from_replica": true, "smart_backoff_to_prevent_connection_storm": true, diff --git a/clients/php/github.com/phpredis/phpredis.json b/clients/php/github.com/phpredis/phpredis.json index e3caeb54..66e13c7b 100644 --- a/clients/php/github.com/phpredis/phpredis.json +++ b/clients/php/github.com/phpredis/phpredis.json @@ -7,6 +7,8 @@ "yowgi", "yatsukhnenko" ], + "github":"https://github.com/phpredis/phpredis", + "installation": "composer require predis/predis", "language":"PHP", "read_from_replica": true, "smart_backoff_to_prevent_connection_storm": true, diff --git a/clients/python/github.com/valkey/valkey-GLIDE.json b/clients/python/github.com/valkey/valkey-GLIDE.json index 3e8b94e6..14655585 100644 --- a/clients/python/github.com/valkey/valkey-GLIDE.json +++ b/clients/python/github.com/valkey/valkey-GLIDE.json @@ -1,6 +1,8 @@ { "name": "Valkey GLIDE", - "description": "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. ", + "description": "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, node.js and Python.", + "github":"https://github.com/valkey-io/valkey-glide/tree/main/python", + "installation": "pip install valkey-glide", "language":"Python", "read_from_replica": true, "smart_backoff_to_prevent_connection_storm": true, diff --git a/clients/python/github.com/valkey/valkey-py.json b/clients/python/github.com/valkey/valkey-py.json index c4e5e5d4..282177c1 100644 --- a/clients/python/github.com/valkey/valkey-py.json +++ b/clients/python/github.com/valkey/valkey-py.json @@ -1,6 +1,8 @@ { "name": "valkey-py", "description": "The Python interface to the Valkey key-value store.", + "github":"https://github.com/valkey-io/valkey-py", + "installation": "pip install valkey", "language":"Python", "read_from_replica": true, "smart_backoff_to_prevent_connection_storm": true, diff --git a/topics/client-list.md b/topics/client-list.md index 4591eadd..aa4c6c1e 100644 --- a/topics/client-list.md +++ b/topics/client-list.md @@ -33,96 +33,3 @@ Advanced Features Overview 9. **`CLIENT CAPA redirect` Support** - The `CLIENT CAPA redirect` feature was introduced in Valkey 8 to facilitate seamless upgrades without causing errors in standalone mode. When enabled, this feature allows the replica to redirect data access commands (both read and write operations) to the primary instance. This ensures uninterrupted service during the upgrade process. For more detailed information about this feature, please refer to the following link: https://github.com/valkey-io/valkey/pull/325 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) -- [Python](#python) -- [JavaScript/Node.js](#javascriptnodejs) -- [Java](#java) -- [Go](#go) -- [PHP](#php) - - -Python ------ -- **valkey-glide** - - GitHub: [valkey-glide](https://github.com/valkey-io/valkey-glide/tree/main/python) - - Installation: `pip install valkey-glide` - - Description: 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, node.js and Python. - -- **valkey-py** - - GitHub: [valkey-py](https://github.com/valkey-io/valkey-py) - - Installation: `pip install valkey` - - Description: The Python interface to the Valkey key-value store. - - -JavaScript/Node.js ----- -- **valkey-glide** - - GitHub: [valkey-glide](https://github.com/valkey-io/valkey-glide/tree/main/node) - - Installation: `npm install valkey-glide` - - Description: 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, node.js and Python. - -- **iovalkey** - - GitHub: [iovalkey](https://github.com/valkey-io/iovalkey) - - 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. - -Java ----- - -- **valkey-glide** - - GitHub: [valkey-glide](https://github.com/valkey-io/valkey-glide/tree/main/java) - - Installation: - - Maven - - ``` - - io.valkey - valkey-glide - 1.2.0 - - ``` - Gradle - - `implementation 'io.valkey:valkey-glide:1.2.0'` - - - - Description: 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, node.js and Python. - -- **Valkey-Java** - - GitHub: [valkey-java](https://github.com/valkey-io/valkey-java) - - Installation: - - Maven - - ``` - - io.valkey - valkey-java - 5.3.0 - - ``` - Gradle - - `implementation 'io.valkey:valkey-java:5.3.0'` - - Description: valkey-java is Valkey's Java client, dedicated to maintaining simplicity and high performance. - - -Go ------ -- **valkey-go** - - GitHub: [go-valkey-go](https://github.com/valkey-io/valkey-go) - - Installation: `go get github.com/valkey-io/valkey-go` - - Description: A fast Golang Valkey client that does auto pipelining and supports server-assisted client-side caching. - - -PHP ----- -- **Predis** - - GitHub: [Predis](https://github.com/predis/predis) - - Installation: `composer require predis/predis` - - Description: A flexible and feature-rich Valkey client for PHP. - -- **phpredis** - - GitHub: [phpredis](https://github.com/phpredis/phpredis) - - Installation: Install via PECL or compile from source - - Description: A PHP extension for Redis, offering high performance and a native API. From f2b382bb959b65dcf1e369f36840d5bb9945aed8 Mon Sep 17 00:00:00 2001 From: lior sventitzky Date: Mon, 16 Dec 2024 13:47:11 +0000 Subject: [PATCH 14/19] added placeholder for package size in jsons Signed-off-by: lior sventitzky --- clients/go/github.com/valkey/valkey-go.json | 1 + clients/java/github.com/valkey/valkey-GLIDE.json | 1 + clients/java/github.com/valkey/valkey-java.json | 1 + clients/nodejs/github.com/valkey/iovalkey.json | 1 + clients/nodejs/github.com/valkey/valkey-GLIDE.json | 1 + clients/php/github.com/nrk/predis.json | 2 +- clients/php/github.com/phpredis/phpredis.json | 2 +- clients/python/github.com/valkey/valkey-GLIDE.json | 1 + clients/python/github.com/valkey/valkey-py.json | 1 + 9 files changed, 9 insertions(+), 2 deletions(-) diff --git a/clients/go/github.com/valkey/valkey-go.json b/clients/go/github.com/valkey/valkey-go.json index 3e420afa..fe3b7e90 100644 --- a/clients/go/github.com/valkey/valkey-go.json +++ b/clients/go/github.com/valkey/valkey-go.json @@ -4,6 +4,7 @@ "github":"https://github.com/valkey-io/valkey-go", "installation": "go get github.com/valkey-io/valkey-go", "language":"Go", + "package_size": "", "read_from_replica": true, "smart_backoff_to_prevent_connection_storm": true, "valkey_version_compatibility": "7.2", diff --git a/clients/java/github.com/valkey/valkey-GLIDE.json b/clients/java/github.com/valkey/valkey-GLIDE.json index b2255ced..5a5de2b4 100644 --- a/clients/java/github.com/valkey/valkey-GLIDE.json +++ b/clients/java/github.com/valkey/valkey-GLIDE.json @@ -14,6 +14,7 @@ } ], "language":"Java", + "package_size": "", "read_from_replica": true, "smart_backoff_to_prevent_connection_storm": true, "valkey_version_compatibility": "8.0", diff --git a/clients/java/github.com/valkey/valkey-java.json b/clients/java/github.com/valkey/valkey-java.json index 278e74a6..7d6017a6 100644 --- a/clients/java/github.com/valkey/valkey-java.json +++ b/clients/java/github.com/valkey/valkey-java.json @@ -14,6 +14,7 @@ } ], "language":"Java", + "package_size": "", "read_from_replica": false, "smart_backoff_to_prevent_connection_storm": true, "valkey_version_compatibility": "7.2", diff --git a/clients/nodejs/github.com/valkey/iovalkey.json b/clients/nodejs/github.com/valkey/iovalkey.json index b5c9aa85..c4532dfc 100644 --- a/clients/nodejs/github.com/valkey/iovalkey.json +++ b/clients/nodejs/github.com/valkey/iovalkey.json @@ -4,6 +4,7 @@ "github":"https://github.com/valkey-io/iovalkey", "installation": "npm install iovalkey", "language":"JavaScript/Node.js", + "package_size": "", "read_from_replica": true, "smart_backoff_to_prevent_connection_storm": true, "valkey_version_compatibility": "7.2", diff --git a/clients/nodejs/github.com/valkey/valkey-GLIDE.json b/clients/nodejs/github.com/valkey/valkey-GLIDE.json index 707b8c15..9000bf68 100644 --- a/clients/nodejs/github.com/valkey/valkey-GLIDE.json +++ b/clients/nodejs/github.com/valkey/valkey-GLIDE.json @@ -4,6 +4,7 @@ "github":"https://github.com/valkey-io/valkey-glide/tree/main/node", "installation": "npm install valkey-glide", "language":"JavaScript/Node.js", + "package_size": "", "read_from_replica": true, "smart_backoff_to_prevent_connection_storm": true, "valkey_version_compatibility": "8.0", diff --git a/clients/php/github.com/nrk/predis.json b/clients/php/github.com/nrk/predis.json index 6e19add8..08a518c0 100644 --- a/clients/php/github.com/nrk/predis.json +++ b/clients/php/github.com/nrk/predis.json @@ -1,13 +1,13 @@ { "name": "Predis", "description": "A flexible and feature-complete Redis client for PHP.", - "recommended": true, "twitter": [ "JoL1hAHN" ], "github":"https://github.com/predis/predis", "installation": "pecl install redis", "language":"PHP", + "package_size": "", "read_from_replica": true, "smart_backoff_to_prevent_connection_storm": true, "valkey_version_compatibility": "7.2", diff --git a/clients/php/github.com/phpredis/phpredis.json b/clients/php/github.com/phpredis/phpredis.json index 66e13c7b..e994d7a7 100644 --- a/clients/php/github.com/phpredis/phpredis.json +++ b/clients/php/github.com/phpredis/phpredis.json @@ -1,7 +1,6 @@ { "name": "phpredis", "description": " A PHP extension for Redis, offering high performance and a native API.", - "recommended": true, "twitter": [ "grumi78", "yowgi", @@ -10,6 +9,7 @@ "github":"https://github.com/phpredis/phpredis", "installation": "composer require predis/predis", "language":"PHP", + "package_size": "", "read_from_replica": true, "smart_backoff_to_prevent_connection_storm": true, "valkey_version_compatibility": "7.2", diff --git a/clients/python/github.com/valkey/valkey-GLIDE.json b/clients/python/github.com/valkey/valkey-GLIDE.json index 14655585..a9ad690a 100644 --- a/clients/python/github.com/valkey/valkey-GLIDE.json +++ b/clients/python/github.com/valkey/valkey-GLIDE.json @@ -4,6 +4,7 @@ "github":"https://github.com/valkey-io/valkey-glide/tree/main/python", "installation": "pip install valkey-glide", "language":"Python", + "package_size": "", "read_from_replica": true, "smart_backoff_to_prevent_connection_storm": true, "valkey_version_compatibility": "8.0", diff --git a/clients/python/github.com/valkey/valkey-py.json b/clients/python/github.com/valkey/valkey-py.json index 282177c1..7df29f0f 100644 --- a/clients/python/github.com/valkey/valkey-py.json +++ b/clients/python/github.com/valkey/valkey-py.json @@ -4,6 +4,7 @@ "github":"https://github.com/valkey-io/valkey-py", "installation": "pip install valkey", "language":"Python", + "package_size": "", "read_from_replica": true, "smart_backoff_to_prevent_connection_storm": true, "valkey_version_compatibility": "7.2", From 9c8a126c9d027c8235cd77d6b965d926d4befeab Mon Sep 17 00:00:00 2001 From: lior sventitzky Date: Sun, 5 Jan 2025 08:31:37 +0000 Subject: [PATCH 15/19] changed clients directory structure - divide to 2 subfolders for clients used in clients page and rest Signed-off-by: lior sventitzky --- .../github.com/valkey => client-page-clients/go}/valkey-go.json | 0 .../valkey => client-page-clients/java}/valkey-GLIDE.json | 0 .../valkey => client-page-clients/java}/valkey-java.json | 0 .../valkey => client-page-clients/nodejs}/iovalkey.json | 0 .../valkey => client-page-clients/nodejs}/valkey-GLIDE.json | 0 .../github.com/phpredis => client-page-clients/php}/phpredis.json | 0 .../{php/github.com/nrk => client-page-clients/php}/predis.json | 0 .../valkey => client-page-clients/python}/valkey-GLIDE.json | 0 .../valkey => client-page-clients/python}/valkey-py.json | 0 .../actionscript/github.com/mikeheier/Redis-AS3.json | 0 .../activex-com/gitlab.com/erik4/redis-com-client.json | 0 .../github.com/ballerina-platform/module-ballerinax-redis.json | 0 .../bash/github.com/SomajitDey/redis-client.json | 0 .../{ => other-clients}/bash/github.com/caquino/redis-bash.json | 0 clients/{ => other-clients}/bash/github.com/crypt1d/redi.sh.json | 0 .../boomi/github.com/zachary-samsel/boomi-redis-connector.json | 0 .../c/code.google.com/p/credis/source/browse.json | 0 .../c/github.com/EulerianTechnologies/eredis.json | 0 .../{ => other-clients}/c/github.com/Nordix/hiredis-cluster.json | 0 clients/{ => other-clients}/c/github.com/aclisp/hiredispool.json | 0 clients/{ => other-clients}/c/github.com/redis/hiredis.json | 0 clients/{ => other-clients}/c/github.com/toymachine/libredis.json | 0 clients/{ => other-clients}/c/github.com/vipshop/hiredis-vip.json | 0 .../clojure/github.com/ptaoussanis/carmine.json | 0 .../common-lisp/github.com/vseloved/cl-redis.json | 0 clients/{ => other-clients}/cpp/github.com/0xsky/xredis.json | 0 .../cpp/github.com/Levhav/SimpleRedisClient.json | 0 .../acl/tree/master/lib_acl_cpp/include/acl_cpp/redis.json | 0 .../{ => other-clients}/cpp/github.com/basiliscos/cpp-bredis.json | 0 .../{ => other-clients}/cpp/github.com/cpp-redis/cpp_redis.json | 0 clients/{ => other-clients}/cpp/github.com/eyjian/r3c.json | 0 .../{ => other-clients}/cpp/github.com/hamidr/async-redis.json | 0 clients/{ => other-clients}/cpp/github.com/hmartiro/redox.json | 0 clients/{ => other-clients}/cpp/github.com/icerlion/FlyRedis.json | 0 clients/{ => other-clients}/cpp/github.com/luca3m/redis3m.json | 0 .../cpp/github.com/mrpi/redis-cplusplus-client.json | 0 clients/{ => other-clients}/cpp/github.com/mzimbres/aedis.json | 0 .../{ => other-clients}/cpp/github.com/nekipelov/redisclient.json | 0 clients/{ => other-clients}/cpp/github.com/nokia/wiredis.json | 0 .../cpp/github.com/sewenew/redis-plus-plus.json | 0 .../{ => other-clients}/cpp/github.com/shawn246/redis_client.json | 0 clients/{ => other-clients}/cpp/github.com/tdv/redis-cpp.json | 0 .../{ => other-clients}/cpp/github.com/uglide/qredisclient.json | 0 clients/{ => other-clients}/cpp/github.com/wusongwei/soce.json | 0 .../crystal/github.com/stefanwille/crystal-redis.json | 0 .../{ => other-clients}/csharp/github.com/2881099/FreeRedis.json | 0 .../csharp/github.com/IKende/BeetleX.Redis.json | 0 .../csharp/github.com/NewLifeX/NewLife.Redis.json | 0 .../csharp/github.com/ServiceStack/ServiceStack.Redis.json | 0 .../csharp/github.com/StackExchange/StackExchange.Redis.json | 0 .../csharp/github.com/andrew-bn/RedisBoost.json | 0 .../{ => other-clients}/csharp/github.com/ctstone/csredis.json | 0 .../{ => other-clients}/csharp/github.com/mhowlett/Nhiredis.json | 0 .../csharp/github.com/migueldeicaza/redis-sharp.json | 0 .../{ => other-clients}/csharp/github.com/pepelev/Rediska.json | 0 .../{ => other-clients}/csharp/github.com/redis/NRedisStack.json | 0 .../csharp/github.com/zhuovi/XiaoFeng.Redis.json | 0 .../{ => other-clients}/csharp/www.nuget.org/packages/Sider.json | 0 clients/{ => other-clients}/d/github.com/adilbaig/Tiny-Redis.json | 0 clients/{ => other-clients}/dart/github.com/SiLeader/dedis.json | 0 .../{ => other-clients}/dart/github.com/dartist/redis_client.json | 0 .../{ => other-clients}/dart/github.com/himulawang/i_redis.json | 0 clients/{ => other-clients}/dart/github.com/jcmellado/dartis.json | 0 clients/{ => other-clients}/dart/github.com/ra1u/redis-dart.json | 0 .../delphi/github.com/danieleteti/delphiredisclient.json | 0 .../{ => other-clients}/deno/github.com/denodrivers/redis.json | 0 clients/{ => other-clients}/deno/github.com/iuioiua/r2d2.json | 0 .../{ => other-clients}/elixir/github.com/artemeff/exredis.json | 0 .../{ => other-clients}/elixir/github.com/whatyouhide/redix.json | 0 .../{ => other-clients}/emacs-lisp/code.google.com/p/eredis.json | 0 .../erlang/github.com/HalloAppInc/ecredis.json | 0 clients/{ => other-clients}/erlang/github.com/Nordix/eredis.json | 0 .../erlang/github.com/Nordix/eredis_cluster.json | 0 .../erlang/github.com/adrienmo/eredis_cluster.json | 0 clients/{ => other-clients}/erlang/github.com/wooga/eredis.json | 0 .../gawk/sourceforge.net/projects/gawkextlib.json | 0 .../gleam/github.com/massivefermion/radish.json | 0 .../github.com/emacstheviking/gnuprolog-redisclient.json | 0 clients/{ => other-clients}/go/github.com/alphazero/Go-Redis.json | 0 .../{ => other-clients}/go/github.com/gistao/RedisGo-Async.json | 0 clients/{ => other-clients}/go/github.com/gomodule/redigo.json | 0 clients/{ => other-clients}/go/github.com/gosexy/redis.json | 0 clients/{ => other-clients}/go/github.com/hoisie/redis.json | 0 clients/{ => other-clients}/go/github.com/joomcode/redispipe.json | 0 clients/{ => other-clients}/go/github.com/keimoon/gore.json | 0 .../{ => other-clients}/go/github.com/mediocregopher/radix.json | 0 clients/{ => other-clients}/go/github.com/pascaldekloe/redis.json | 0 clients/{ => other-clients}/go/github.com/piaohao/godis.json | 0 clients/{ => other-clients}/go/github.com/redis/go-redis.json | 0 clients/{ => other-clients}/go/github.com/rueian/rueidis.json | 0 clients/{ => other-clients}/go/github.com/shipwire/redis.json | 0 clients/{ => other-clients}/go/github.com/simonz05/godis.json | 0 clients/{ => other-clients}/go/github.com/stfnmllr/go-resp3.json | 0 clients/{ => other-clients}/go/github.com/tideland/golib.json | 0 clients/{ => other-clients}/go/github.com/xuyu/goredis.json | 0 .../{ => other-clients}/haskell/github.com/informatikr/hedis.json | 0 clients/{ => other-clients}/io/github.com/vangberg/iodis.json | 0 .../java/code.google.com/p/jdbc-redis/source/browse.json | 0 clients/{ => other-clients}/java/github.com/alphazero/jredis.json | 0 .../java/github.com/drm/java-redis-client.json | 0 clients/{ => other-clients}/java/github.com/e-mzungu/rjc.json | 0 .../java/github.com/lettuce-io/lettuce-core.json | 0 clients/{ => other-clients}/java/github.com/mrniko/redisson.json | 0 clients/{ => other-clients}/java/github.com/redis/jedis.json | 0 .../java/github.com/spullara/redis-protocol.json | 0 .../java/github.com/vert-x3/vertx-redis-client.json | 0 .../java/github.com/virendradhankar/viredis.json | 0 .../{ => other-clients}/java/sourceforge.net/projects/aredis.json | 0 .../julia/github.com/captchanjack/Jedis.jl.json | 0 .../{ => other-clients}/julia/github.com/jkaye2012/redis.jl.json | 0 .../kotlin/github.com/crackthecodeabhi/kreds.json | 0 clients/{ => other-clients}/kotlin/github.com/domgew/kedis.json | 0 .../lasso/github.com/Zeroloop/lasso-redis.json | 0 .../{ => other-clients}/lua/github.com/agladysh/lua-hiredis.json | 0 .../{ => other-clients}/lua/github.com/daurnimator/lredis.json | 0 clients/{ => other-clients}/lua/github.com/nrk/redis-lua.json | 0 .../matlab/github.com/GummyJum/MatlabRedis.json | 0 .../{ => other-clients}/matlab/github.com/markuman/go-redis.json | 0 .../mruby/github.com/Asmod4n/mruby-hiredis.json | 0 .../mruby/github.com/matsumoto-r/mruby-redis.json | 0 clients/{ => other-clients}/nim/github.com/nim-lang/redis.json | 0 .../nim/github.com/xmonader/nim-redisclient.json | 0 .../nodejs/github.com/CapacitorSet/rebridge.json | 0 .../nodejs/github.com/anchovycation/metronom.json | 0 clients/{ => other-clients}/nodejs/github.com/camarojs/redis.json | 0 .../{ => other-clients}/nodejs/github.com/djanowski/yoredis.json | 0 .../nodejs/github.com/fictorial/redis-node-client.json | 0 .../nodejs/github.com/h0x91b/fast-redis-cluster.json | 0 .../nodejs/github.com/h0x91b/redis-fast-driver.json | 0 clients/{ => other-clients}/nodejs/github.com/luin/ioredis.json | 0 .../nodejs/github.com/mjackson/then-redis.json | 0 .../{ => other-clients}/nodejs/github.com/mmkal/handy-redis.json | 0 .../{ => other-clients}/nodejs/github.com/razaellahi/xredis.json | 0 .../{ => other-clients}/nodejs/github.com/redis/node-redis.json | 0 clients/{ => other-clients}/nodejs/github.com/rootslab/spade.json | 0 clients/{ => other-clients}/nodejs/github.com/silkjs/tedis.json | 0 .../{ => other-clients}/nodejs/github.com/thunks/thunk-redis.json | 0 .../nodejs/github.com/wallneradam/noderis.json | 0 .../objective-c/github.com/dizzus/RedisKit.json | 0 .../objective-c/github.com/lp/ObjCHiredis.json | 0 .../{ => other-clients}/ocaml/github.com/0xffea/ocaml-redis.json | 0 .../ocaml/github.com/janestreet/redis-async.json | 0 .../pascal/bitbucket.org/Gloegg/delphi-redis.git.json | 0 .../pascal/github.com/danieleteti/delphiredisclient.json | 0 .../pascal/github.com/ik5/redis_client.fpc.json | 0 .../{ => other-clients}/pascal/github.com/isyscore/fpredis.json | 0 .../{ => other-clients}/perl/github.com/PerlRedis/perl-redis.json | 0 .../perl/github.com/iph0/AnyEvent-RipeRedis-Cluster.json | 0 .../perl/github.com/iph0/AnyEvent-RipeRedis.json | 0 .../perl/github.com/iph0/Redis-ClusterRider.json | 0 .../perl/github.com/marcusramberg/mojo-redis.json | 0 .../perl/github.com/miyagawa/AnyEvent-Redis.json | 0 .../perl/github.com/plainbanana/Redis-Cluster-Fast.json | 0 .../perl/github.com/shogo82148/Redis-Fast.json | 0 .../perl/github.com/smsonline/redis-cluster-perl.json | 0 clients/{ => other-clients}/perl/github.com/trinitum/RedisDB.json | 0 .../perl/github.com/wjackson/AnyEvent-Hiredis.json | 0 .../perl/search.cpan.org/dist/Danga-Socket-Redis.json | 0 .../perl/search.cpan.org/dist/Redis-hiredis.json | 0 clients/{ => other-clients}/php/github.com/amphp/redis.json | 0 .../php/github.com/cheprasov/php-redis-client.json | 0 .../php/github.com/colinmollenhour/credis.json | 0 .../php/github.com/jamescauwelier/PSRedis.json | 0 clients/{ => other-clients}/php/github.com/yampee/Redis.json | 0 .../php/github.com/ziogas/PHP-Redis-implementation.json | 0 .../{ => other-clients}/plsql/github.com/SeYoungLee/oredis.json | 0 .../prolog/github.com/SWI-Prolog/packages-redis.json | 0 clients/{ => other-clients}/pure-data/github.com/lp/puredis.json | 0 .../python/github.com/DriverX/aioredis-cluster.json | 0 .../python/github.com/Grokzen/redis-py-cluster.json | 0 .../python/github.com/KissPeter/redis-streams.json | 0 clients/{ => other-clients}/python/github.com/aallamaa/desir.json | 0 .../{ => other-clients}/python/github.com/alisaifee/coredis.json | 0 .../{ => other-clients}/python/github.com/brainix/pottery.json | 0 .../python/github.com/cf020031308/redisio.json | 0 .../{ => other-clients}/python/github.com/coleifer/walrus.json | 0 .../{ => other-clients}/python/github.com/evilkost/brukva.json | 0 .../{ => other-clients}/python/github.com/fiorix/txredisapi.json | 0 .../python/github.com/gh0st-work/python_redis_orm.json | 0 .../{ => other-clients}/python/github.com/groove-x/gxredis.json | 0 .../python/github.com/jonathanslenders/asyncio-redis.json | 0 .../{ => other-clients}/python/github.com/khamin/redisca2.json | 0 .../python/github.com/pepijndevos/pypredis.json | 0 clients/{ => other-clients}/python/github.com/redis/redis-py.json | 0 .../python/github.com/schlitzered/pyredis.json | 0 .../{ => other-clients}/python/github.com/thefab/tornadis.json | 0 .../{ => other-clients}/python/pypi.python.org/pypi/txredis.json | 0 .../r/bitbucket.org/cmbce/r-package-rediscli.json | 0 clients/{ => other-clients}/r/github.com/bwlewis/rredis.json | 0 .../{ => other-clients}/r/github.com/eddelbuettel/rcppredis.json | 0 clients/{ => other-clients}/r/github.com/richfitz/redux.json | 0 clients/{ => other-clients}/racket/github.com/eu90h/rackdis.json | 0 clients/{ => other-clients}/racket/github.com/stchang/redis.json | 0 .../{ => other-clients}/rebol/github.com/rebolek/prot-redis.json | 0 clients/{ => other-clients}/ruby/github.com/amakawa/redic.json | 0 .../ruby/github.com/bukalapak/redis-cluster.json | 0 .../{ => other-clients}/ruby/github.com/madsimian/em-redis.json | 0 .../{ => other-clients}/ruby/github.com/mloughran/em-hiredis.json | 0 .../ruby/github.com/redis-rb/redis-client.json | 0 .../ruby/github.com/redis-rb/redis-cluster-client.json | 0 clients/{ => other-clients}/ruby/github.com/redis/redis-rb.json | 0 .../rust/github.com/AsoSunag/redis-client.json | 0 .../rust/github.com/dahomey-technologies/rustis.json | 0 clients/{ => other-clients}/rust/github.com/ltoddy/redis-rs.json | 0 .../{ => other-clients}/rust/github.com/mitsuhiko/redis-rs.json | 0 .../{ => other-clients}/rust/github.com/mneumann/rust-redis.json | 0 .../{ => other-clients}/scala/github.com/acrosa/scala-redis.json | 0 .../scala/github.com/andreyk0/redis-client-scala-netty.json | 0 .../scala/github.com/chiradip/RedisClient.json | 0 .../{ => other-clients}/scala/github.com/chrisdinn/brando.json | 0 .../scala/github.com/debasishg/scala-redis.json | 0 clients/{ => other-clients}/scala/github.com/etaty/rediscala.json | 0 clients/{ => other-clients}/scala/github.com/jodersky/redicl.json | 0 .../scala/github.com/laserdisc-io/laserdisc.json | 0 .../{ => other-clients}/scala/github.com/monix/monix-connect.json | 0 clients/{ => other-clients}/scala/github.com/naoh87/lettucef.json | 0 clients/{ => other-clients}/scala/github.com/pk11/sedis.json | 0 .../scala/github.com/profunktor/redis4cats.json | 0 .../scala/github.com/redislabs/spark-redis.json | 0 clients/{ => other-clients}/scala/github.com/scredis/scredis.json | 0 clients/{ => other-clients}/scala/github.com/twitter/finagle.json | 0 .../scala/github.com/yarosman/redis-client-scala-netty.json | 0 .../scheme/github.com/aconchillo/guile-redis.json | 0 .../scheme/github.com/carld/redis-client.egg.json | 0 .../{ => other-clients}/smalltalk/github.com/mumez/RediStick.json | 0 .../smalltalk/github.com/svenvc/SimpleRedisClient.json | 0 .../smalltalk/github.com/tblanchard/Pharo-Redis.json | 0 clients/{ => other-clients}/swift/github.com/Farhaddc/Swidis.json | 0 .../{ => other-clients}/swift/github.com/Mordil/RediStack.json | 0 clients/{ => other-clients}/swift/github.com/Zewo/Redis.json | 0 .../{ => other-clients}/swift/github.com/czechboy0/Redbird.json | 0 .../swift/github.com/michaelvanstraten/Swifty-Redis.json | 0 .../swift/github.com/perrystreetsoftware/PSSRedisClient.json | 0 .../{ => other-clients}/swift/github.com/ronp001/SwiftRedis.json | 0 .../swift/github.com/seznam/swift-uniredis.json | 0 clients/{ => other-clients}/tcl/github.com/gahr/retcl.json | 0 clients/{ => other-clients}/tcl/github.com/redis/redis.json | 0 clients/{ => other-clients}/vb/github.com/hishamco/vRedis.json | 0 .../vcl/github.com/carlosabalde/libvmod-redis.json | 0 .../{ => other-clients}/xojo/github.com/ktekinay/XOJO-Redis.json | 0 .../zig/github.com/kristoff-it/zig-okredis.json | 0 241 files changed, 0 insertions(+), 0 deletions(-) rename clients/{go/github.com/valkey => client-page-clients/go}/valkey-go.json (100%) rename clients/{java/github.com/valkey => client-page-clients/java}/valkey-GLIDE.json (100%) rename clients/{java/github.com/valkey => client-page-clients/java}/valkey-java.json (100%) rename clients/{nodejs/github.com/valkey => client-page-clients/nodejs}/iovalkey.json (100%) rename clients/{nodejs/github.com/valkey => client-page-clients/nodejs}/valkey-GLIDE.json (100%) rename clients/{php/github.com/phpredis => client-page-clients/php}/phpredis.json (100%) rename clients/{php/github.com/nrk => client-page-clients/php}/predis.json (100%) rename clients/{python/github.com/valkey => client-page-clients/python}/valkey-GLIDE.json (100%) rename clients/{python/github.com/valkey => client-page-clients/python}/valkey-py.json (100%) rename clients/{ => other-clients}/actionscript/github.com/mikeheier/Redis-AS3.json (100%) rename clients/{ => other-clients}/activex-com/gitlab.com/erik4/redis-com-client.json (100%) rename clients/{ => other-clients}/ballerina/github.com/ballerina-platform/module-ballerinax-redis.json (100%) rename clients/{ => other-clients}/bash/github.com/SomajitDey/redis-client.json (100%) rename clients/{ => other-clients}/bash/github.com/caquino/redis-bash.json (100%) rename clients/{ => other-clients}/bash/github.com/crypt1d/redi.sh.json (100%) rename clients/{ => other-clients}/boomi/github.com/zachary-samsel/boomi-redis-connector.json (100%) rename clients/{ => other-clients}/c/code.google.com/p/credis/source/browse.json (100%) rename clients/{ => other-clients}/c/github.com/EulerianTechnologies/eredis.json (100%) rename clients/{ => other-clients}/c/github.com/Nordix/hiredis-cluster.json (100%) rename clients/{ => other-clients}/c/github.com/aclisp/hiredispool.json (100%) rename clients/{ => other-clients}/c/github.com/redis/hiredis.json (100%) rename clients/{ => other-clients}/c/github.com/toymachine/libredis.json (100%) rename clients/{ => other-clients}/c/github.com/vipshop/hiredis-vip.json (100%) rename clients/{ => other-clients}/clojure/github.com/ptaoussanis/carmine.json (100%) rename clients/{ => other-clients}/common-lisp/github.com/vseloved/cl-redis.json (100%) rename clients/{ => other-clients}/cpp/github.com/0xsky/xredis.json (100%) rename clients/{ => other-clients}/cpp/github.com/Levhav/SimpleRedisClient.json (100%) rename clients/{ => other-clients}/cpp/github.com/acl-dev/acl/tree/master/lib_acl_cpp/include/acl_cpp/redis.json (100%) rename clients/{ => other-clients}/cpp/github.com/basiliscos/cpp-bredis.json (100%) rename clients/{ => other-clients}/cpp/github.com/cpp-redis/cpp_redis.json (100%) rename clients/{ => other-clients}/cpp/github.com/eyjian/r3c.json (100%) rename clients/{ => other-clients}/cpp/github.com/hamidr/async-redis.json (100%) rename clients/{ => other-clients}/cpp/github.com/hmartiro/redox.json (100%) rename clients/{ => other-clients}/cpp/github.com/icerlion/FlyRedis.json (100%) rename clients/{ => other-clients}/cpp/github.com/luca3m/redis3m.json (100%) rename clients/{ => other-clients}/cpp/github.com/mrpi/redis-cplusplus-client.json (100%) rename clients/{ => other-clients}/cpp/github.com/mzimbres/aedis.json (100%) rename clients/{ => other-clients}/cpp/github.com/nekipelov/redisclient.json (100%) rename clients/{ => other-clients}/cpp/github.com/nokia/wiredis.json (100%) rename clients/{ => other-clients}/cpp/github.com/sewenew/redis-plus-plus.json (100%) rename clients/{ => other-clients}/cpp/github.com/shawn246/redis_client.json (100%) rename clients/{ => other-clients}/cpp/github.com/tdv/redis-cpp.json (100%) rename clients/{ => other-clients}/cpp/github.com/uglide/qredisclient.json (100%) rename clients/{ => other-clients}/cpp/github.com/wusongwei/soce.json (100%) rename clients/{ => other-clients}/crystal/github.com/stefanwille/crystal-redis.json (100%) rename clients/{ => other-clients}/csharp/github.com/2881099/FreeRedis.json (100%) rename clients/{ => other-clients}/csharp/github.com/IKende/BeetleX.Redis.json (100%) rename clients/{ => other-clients}/csharp/github.com/NewLifeX/NewLife.Redis.json (100%) rename clients/{ => other-clients}/csharp/github.com/ServiceStack/ServiceStack.Redis.json (100%) rename clients/{ => other-clients}/csharp/github.com/StackExchange/StackExchange.Redis.json (100%) rename clients/{ => other-clients}/csharp/github.com/andrew-bn/RedisBoost.json (100%) rename clients/{ => other-clients}/csharp/github.com/ctstone/csredis.json (100%) rename clients/{ => other-clients}/csharp/github.com/mhowlett/Nhiredis.json (100%) rename clients/{ => other-clients}/csharp/github.com/migueldeicaza/redis-sharp.json (100%) rename clients/{ => other-clients}/csharp/github.com/pepelev/Rediska.json (100%) rename clients/{ => other-clients}/csharp/github.com/redis/NRedisStack.json (100%) rename clients/{ => other-clients}/csharp/github.com/zhuovi/XiaoFeng.Redis.json (100%) rename clients/{ => other-clients}/csharp/www.nuget.org/packages/Sider.json (100%) rename clients/{ => other-clients}/d/github.com/adilbaig/Tiny-Redis.json (100%) rename clients/{ => other-clients}/dart/github.com/SiLeader/dedis.json (100%) rename clients/{ => other-clients}/dart/github.com/dartist/redis_client.json (100%) rename clients/{ => other-clients}/dart/github.com/himulawang/i_redis.json (100%) rename clients/{ => other-clients}/dart/github.com/jcmellado/dartis.json (100%) rename clients/{ => other-clients}/dart/github.com/ra1u/redis-dart.json (100%) rename clients/{ => other-clients}/delphi/github.com/danieleteti/delphiredisclient.json (100%) rename clients/{ => other-clients}/deno/github.com/denodrivers/redis.json (100%) rename clients/{ => other-clients}/deno/github.com/iuioiua/r2d2.json (100%) rename clients/{ => other-clients}/elixir/github.com/artemeff/exredis.json (100%) rename clients/{ => other-clients}/elixir/github.com/whatyouhide/redix.json (100%) rename clients/{ => other-clients}/emacs-lisp/code.google.com/p/eredis.json (100%) rename clients/{ => other-clients}/erlang/github.com/HalloAppInc/ecredis.json (100%) rename clients/{ => other-clients}/erlang/github.com/Nordix/eredis.json (100%) rename clients/{ => other-clients}/erlang/github.com/Nordix/eredis_cluster.json (100%) rename clients/{ => other-clients}/erlang/github.com/adrienmo/eredis_cluster.json (100%) rename clients/{ => other-clients}/erlang/github.com/wooga/eredis.json (100%) rename clients/{ => other-clients}/gawk/sourceforge.net/projects/gawkextlib.json (100%) rename clients/{ => other-clients}/gleam/github.com/massivefermion/radish.json (100%) rename clients/{ => other-clients}/gnu-prolog/github.com/emacstheviking/gnuprolog-redisclient.json (100%) rename clients/{ => other-clients}/go/github.com/alphazero/Go-Redis.json (100%) rename clients/{ => other-clients}/go/github.com/gistao/RedisGo-Async.json (100%) rename clients/{ => other-clients}/go/github.com/gomodule/redigo.json (100%) rename clients/{ => other-clients}/go/github.com/gosexy/redis.json (100%) rename clients/{ => other-clients}/go/github.com/hoisie/redis.json (100%) rename clients/{ => other-clients}/go/github.com/joomcode/redispipe.json (100%) rename clients/{ => other-clients}/go/github.com/keimoon/gore.json (100%) rename clients/{ => other-clients}/go/github.com/mediocregopher/radix.json (100%) rename clients/{ => other-clients}/go/github.com/pascaldekloe/redis.json (100%) rename clients/{ => other-clients}/go/github.com/piaohao/godis.json (100%) rename clients/{ => other-clients}/go/github.com/redis/go-redis.json (100%) rename clients/{ => other-clients}/go/github.com/rueian/rueidis.json (100%) rename clients/{ => other-clients}/go/github.com/shipwire/redis.json (100%) rename clients/{ => other-clients}/go/github.com/simonz05/godis.json (100%) rename clients/{ => other-clients}/go/github.com/stfnmllr/go-resp3.json (100%) rename clients/{ => other-clients}/go/github.com/tideland/golib.json (100%) rename clients/{ => other-clients}/go/github.com/xuyu/goredis.json (100%) rename clients/{ => other-clients}/haskell/github.com/informatikr/hedis.json (100%) rename clients/{ => other-clients}/io/github.com/vangberg/iodis.json (100%) rename clients/{ => other-clients}/java/code.google.com/p/jdbc-redis/source/browse.json (100%) rename clients/{ => other-clients}/java/github.com/alphazero/jredis.json (100%) rename clients/{ => other-clients}/java/github.com/drm/java-redis-client.json (100%) rename clients/{ => other-clients}/java/github.com/e-mzungu/rjc.json (100%) rename clients/{ => other-clients}/java/github.com/lettuce-io/lettuce-core.json (100%) rename clients/{ => other-clients}/java/github.com/mrniko/redisson.json (100%) rename clients/{ => other-clients}/java/github.com/redis/jedis.json (100%) rename clients/{ => other-clients}/java/github.com/spullara/redis-protocol.json (100%) rename clients/{ => other-clients}/java/github.com/vert-x3/vertx-redis-client.json (100%) rename clients/{ => other-clients}/java/github.com/virendradhankar/viredis.json (100%) rename clients/{ => other-clients}/java/sourceforge.net/projects/aredis.json (100%) rename clients/{ => other-clients}/julia/github.com/captchanjack/Jedis.jl.json (100%) rename clients/{ => other-clients}/julia/github.com/jkaye2012/redis.jl.json (100%) rename clients/{ => other-clients}/kotlin/github.com/crackthecodeabhi/kreds.json (100%) rename clients/{ => other-clients}/kotlin/github.com/domgew/kedis.json (100%) rename clients/{ => other-clients}/lasso/github.com/Zeroloop/lasso-redis.json (100%) rename clients/{ => other-clients}/lua/github.com/agladysh/lua-hiredis.json (100%) rename clients/{ => other-clients}/lua/github.com/daurnimator/lredis.json (100%) rename clients/{ => other-clients}/lua/github.com/nrk/redis-lua.json (100%) rename clients/{ => other-clients}/matlab/github.com/GummyJum/MatlabRedis.json (100%) rename clients/{ => other-clients}/matlab/github.com/markuman/go-redis.json (100%) rename clients/{ => other-clients}/mruby/github.com/Asmod4n/mruby-hiredis.json (100%) rename clients/{ => other-clients}/mruby/github.com/matsumoto-r/mruby-redis.json (100%) rename clients/{ => other-clients}/nim/github.com/nim-lang/redis.json (100%) rename clients/{ => other-clients}/nim/github.com/xmonader/nim-redisclient.json (100%) rename clients/{ => other-clients}/nodejs/github.com/CapacitorSet/rebridge.json (100%) rename clients/{ => other-clients}/nodejs/github.com/anchovycation/metronom.json (100%) rename clients/{ => other-clients}/nodejs/github.com/camarojs/redis.json (100%) rename clients/{ => other-clients}/nodejs/github.com/djanowski/yoredis.json (100%) rename clients/{ => other-clients}/nodejs/github.com/fictorial/redis-node-client.json (100%) rename clients/{ => other-clients}/nodejs/github.com/h0x91b/fast-redis-cluster.json (100%) rename clients/{ => other-clients}/nodejs/github.com/h0x91b/redis-fast-driver.json (100%) rename clients/{ => other-clients}/nodejs/github.com/luin/ioredis.json (100%) rename clients/{ => other-clients}/nodejs/github.com/mjackson/then-redis.json (100%) rename clients/{ => other-clients}/nodejs/github.com/mmkal/handy-redis.json (100%) rename clients/{ => other-clients}/nodejs/github.com/razaellahi/xredis.json (100%) rename clients/{ => other-clients}/nodejs/github.com/redis/node-redis.json (100%) rename clients/{ => other-clients}/nodejs/github.com/rootslab/spade.json (100%) rename clients/{ => other-clients}/nodejs/github.com/silkjs/tedis.json (100%) rename clients/{ => other-clients}/nodejs/github.com/thunks/thunk-redis.json (100%) rename clients/{ => other-clients}/nodejs/github.com/wallneradam/noderis.json (100%) rename clients/{ => other-clients}/objective-c/github.com/dizzus/RedisKit.json (100%) rename clients/{ => other-clients}/objective-c/github.com/lp/ObjCHiredis.json (100%) rename clients/{ => other-clients}/ocaml/github.com/0xffea/ocaml-redis.json (100%) rename clients/{ => other-clients}/ocaml/github.com/janestreet/redis-async.json (100%) rename clients/{ => other-clients}/pascal/bitbucket.org/Gloegg/delphi-redis.git.json (100%) rename clients/{ => other-clients}/pascal/github.com/danieleteti/delphiredisclient.json (100%) rename clients/{ => other-clients}/pascal/github.com/ik5/redis_client.fpc.json (100%) rename clients/{ => other-clients}/pascal/github.com/isyscore/fpredis.json (100%) rename clients/{ => other-clients}/perl/github.com/PerlRedis/perl-redis.json (100%) rename clients/{ => other-clients}/perl/github.com/iph0/AnyEvent-RipeRedis-Cluster.json (100%) rename clients/{ => other-clients}/perl/github.com/iph0/AnyEvent-RipeRedis.json (100%) rename clients/{ => other-clients}/perl/github.com/iph0/Redis-ClusterRider.json (100%) rename clients/{ => other-clients}/perl/github.com/marcusramberg/mojo-redis.json (100%) rename clients/{ => other-clients}/perl/github.com/miyagawa/AnyEvent-Redis.json (100%) rename clients/{ => other-clients}/perl/github.com/plainbanana/Redis-Cluster-Fast.json (100%) rename clients/{ => other-clients}/perl/github.com/shogo82148/Redis-Fast.json (100%) rename clients/{ => other-clients}/perl/github.com/smsonline/redis-cluster-perl.json (100%) rename clients/{ => other-clients}/perl/github.com/trinitum/RedisDB.json (100%) rename clients/{ => other-clients}/perl/github.com/wjackson/AnyEvent-Hiredis.json (100%) rename clients/{ => other-clients}/perl/search.cpan.org/dist/Danga-Socket-Redis.json (100%) rename clients/{ => other-clients}/perl/search.cpan.org/dist/Redis-hiredis.json (100%) rename clients/{ => other-clients}/php/github.com/amphp/redis.json (100%) rename clients/{ => other-clients}/php/github.com/cheprasov/php-redis-client.json (100%) rename clients/{ => other-clients}/php/github.com/colinmollenhour/credis.json (100%) rename clients/{ => other-clients}/php/github.com/jamescauwelier/PSRedis.json (100%) rename clients/{ => other-clients}/php/github.com/yampee/Redis.json (100%) rename clients/{ => other-clients}/php/github.com/ziogas/PHP-Redis-implementation.json (100%) rename clients/{ => other-clients}/plsql/github.com/SeYoungLee/oredis.json (100%) rename clients/{ => other-clients}/prolog/github.com/SWI-Prolog/packages-redis.json (100%) rename clients/{ => other-clients}/pure-data/github.com/lp/puredis.json (100%) rename clients/{ => other-clients}/python/github.com/DriverX/aioredis-cluster.json (100%) rename clients/{ => other-clients}/python/github.com/Grokzen/redis-py-cluster.json (100%) rename clients/{ => other-clients}/python/github.com/KissPeter/redis-streams.json (100%) rename clients/{ => other-clients}/python/github.com/aallamaa/desir.json (100%) rename clients/{ => other-clients}/python/github.com/alisaifee/coredis.json (100%) rename clients/{ => other-clients}/python/github.com/brainix/pottery.json (100%) rename clients/{ => other-clients}/python/github.com/cf020031308/redisio.json (100%) rename clients/{ => other-clients}/python/github.com/coleifer/walrus.json (100%) rename clients/{ => other-clients}/python/github.com/evilkost/brukva.json (100%) rename clients/{ => other-clients}/python/github.com/fiorix/txredisapi.json (100%) rename clients/{ => other-clients}/python/github.com/gh0st-work/python_redis_orm.json (100%) rename clients/{ => other-clients}/python/github.com/groove-x/gxredis.json (100%) rename clients/{ => other-clients}/python/github.com/jonathanslenders/asyncio-redis.json (100%) rename clients/{ => other-clients}/python/github.com/khamin/redisca2.json (100%) rename clients/{ => other-clients}/python/github.com/pepijndevos/pypredis.json (100%) rename clients/{ => other-clients}/python/github.com/redis/redis-py.json (100%) rename clients/{ => other-clients}/python/github.com/schlitzered/pyredis.json (100%) rename clients/{ => other-clients}/python/github.com/thefab/tornadis.json (100%) rename clients/{ => other-clients}/python/pypi.python.org/pypi/txredis.json (100%) rename clients/{ => other-clients}/r/bitbucket.org/cmbce/r-package-rediscli.json (100%) rename clients/{ => other-clients}/r/github.com/bwlewis/rredis.json (100%) rename clients/{ => other-clients}/r/github.com/eddelbuettel/rcppredis.json (100%) rename clients/{ => other-clients}/r/github.com/richfitz/redux.json (100%) rename clients/{ => other-clients}/racket/github.com/eu90h/rackdis.json (100%) rename clients/{ => other-clients}/racket/github.com/stchang/redis.json (100%) rename clients/{ => other-clients}/rebol/github.com/rebolek/prot-redis.json (100%) rename clients/{ => other-clients}/ruby/github.com/amakawa/redic.json (100%) rename clients/{ => other-clients}/ruby/github.com/bukalapak/redis-cluster.json (100%) rename clients/{ => other-clients}/ruby/github.com/madsimian/em-redis.json (100%) rename clients/{ => other-clients}/ruby/github.com/mloughran/em-hiredis.json (100%) rename clients/{ => other-clients}/ruby/github.com/redis-rb/redis-client.json (100%) rename clients/{ => other-clients}/ruby/github.com/redis-rb/redis-cluster-client.json (100%) rename clients/{ => other-clients}/ruby/github.com/redis/redis-rb.json (100%) rename clients/{ => other-clients}/rust/github.com/AsoSunag/redis-client.json (100%) rename clients/{ => other-clients}/rust/github.com/dahomey-technologies/rustis.json (100%) rename clients/{ => other-clients}/rust/github.com/ltoddy/redis-rs.json (100%) rename clients/{ => other-clients}/rust/github.com/mitsuhiko/redis-rs.json (100%) rename clients/{ => other-clients}/rust/github.com/mneumann/rust-redis.json (100%) rename clients/{ => other-clients}/scala/github.com/acrosa/scala-redis.json (100%) rename clients/{ => other-clients}/scala/github.com/andreyk0/redis-client-scala-netty.json (100%) rename clients/{ => other-clients}/scala/github.com/chiradip/RedisClient.json (100%) rename clients/{ => other-clients}/scala/github.com/chrisdinn/brando.json (100%) rename clients/{ => other-clients}/scala/github.com/debasishg/scala-redis.json (100%) rename clients/{ => other-clients}/scala/github.com/etaty/rediscala.json (100%) rename clients/{ => other-clients}/scala/github.com/jodersky/redicl.json (100%) rename clients/{ => other-clients}/scala/github.com/laserdisc-io/laserdisc.json (100%) rename clients/{ => other-clients}/scala/github.com/monix/monix-connect.json (100%) rename clients/{ => other-clients}/scala/github.com/naoh87/lettucef.json (100%) rename clients/{ => other-clients}/scala/github.com/pk11/sedis.json (100%) rename clients/{ => other-clients}/scala/github.com/profunktor/redis4cats.json (100%) rename clients/{ => other-clients}/scala/github.com/redislabs/spark-redis.json (100%) rename clients/{ => other-clients}/scala/github.com/scredis/scredis.json (100%) rename clients/{ => other-clients}/scala/github.com/twitter/finagle.json (100%) rename clients/{ => other-clients}/scala/github.com/yarosman/redis-client-scala-netty.json (100%) rename clients/{ => other-clients}/scheme/github.com/aconchillo/guile-redis.json (100%) rename clients/{ => other-clients}/scheme/github.com/carld/redis-client.egg.json (100%) rename clients/{ => other-clients}/smalltalk/github.com/mumez/RediStick.json (100%) rename clients/{ => other-clients}/smalltalk/github.com/svenvc/SimpleRedisClient.json (100%) rename clients/{ => other-clients}/smalltalk/github.com/tblanchard/Pharo-Redis.json (100%) rename clients/{ => other-clients}/swift/github.com/Farhaddc/Swidis.json (100%) rename clients/{ => other-clients}/swift/github.com/Mordil/RediStack.json (100%) rename clients/{ => other-clients}/swift/github.com/Zewo/Redis.json (100%) rename clients/{ => other-clients}/swift/github.com/czechboy0/Redbird.json (100%) rename clients/{ => other-clients}/swift/github.com/michaelvanstraten/Swifty-Redis.json (100%) rename clients/{ => other-clients}/swift/github.com/perrystreetsoftware/PSSRedisClient.json (100%) rename clients/{ => other-clients}/swift/github.com/ronp001/SwiftRedis.json (100%) rename clients/{ => other-clients}/swift/github.com/seznam/swift-uniredis.json (100%) rename clients/{ => other-clients}/tcl/github.com/gahr/retcl.json (100%) rename clients/{ => other-clients}/tcl/github.com/redis/redis.json (100%) rename clients/{ => other-clients}/vb/github.com/hishamco/vRedis.json (100%) rename clients/{ => other-clients}/vcl/github.com/carlosabalde/libvmod-redis.json (100%) rename clients/{ => other-clients}/xojo/github.com/ktekinay/XOJO-Redis.json (100%) rename clients/{ => other-clients}/zig/github.com/kristoff-it/zig-okredis.json (100%) diff --git a/clients/go/github.com/valkey/valkey-go.json b/clients/client-page-clients/go/valkey-go.json similarity index 100% rename from clients/go/github.com/valkey/valkey-go.json rename to clients/client-page-clients/go/valkey-go.json diff --git a/clients/java/github.com/valkey/valkey-GLIDE.json b/clients/client-page-clients/java/valkey-GLIDE.json similarity index 100% rename from clients/java/github.com/valkey/valkey-GLIDE.json rename to clients/client-page-clients/java/valkey-GLIDE.json diff --git a/clients/java/github.com/valkey/valkey-java.json b/clients/client-page-clients/java/valkey-java.json similarity index 100% rename from clients/java/github.com/valkey/valkey-java.json rename to clients/client-page-clients/java/valkey-java.json diff --git a/clients/nodejs/github.com/valkey/iovalkey.json b/clients/client-page-clients/nodejs/iovalkey.json similarity index 100% rename from clients/nodejs/github.com/valkey/iovalkey.json rename to clients/client-page-clients/nodejs/iovalkey.json diff --git a/clients/nodejs/github.com/valkey/valkey-GLIDE.json b/clients/client-page-clients/nodejs/valkey-GLIDE.json similarity index 100% rename from clients/nodejs/github.com/valkey/valkey-GLIDE.json rename to clients/client-page-clients/nodejs/valkey-GLIDE.json diff --git a/clients/php/github.com/phpredis/phpredis.json b/clients/client-page-clients/php/phpredis.json similarity index 100% rename from clients/php/github.com/phpredis/phpredis.json rename to clients/client-page-clients/php/phpredis.json diff --git a/clients/php/github.com/nrk/predis.json b/clients/client-page-clients/php/predis.json similarity index 100% rename from clients/php/github.com/nrk/predis.json rename to clients/client-page-clients/php/predis.json diff --git a/clients/python/github.com/valkey/valkey-GLIDE.json b/clients/client-page-clients/python/valkey-GLIDE.json similarity index 100% rename from clients/python/github.com/valkey/valkey-GLIDE.json rename to clients/client-page-clients/python/valkey-GLIDE.json diff --git a/clients/python/github.com/valkey/valkey-py.json b/clients/client-page-clients/python/valkey-py.json similarity index 100% rename from clients/python/github.com/valkey/valkey-py.json rename to clients/client-page-clients/python/valkey-py.json diff --git a/clients/actionscript/github.com/mikeheier/Redis-AS3.json b/clients/other-clients/actionscript/github.com/mikeheier/Redis-AS3.json similarity index 100% rename from clients/actionscript/github.com/mikeheier/Redis-AS3.json rename to clients/other-clients/actionscript/github.com/mikeheier/Redis-AS3.json diff --git a/clients/activex-com/gitlab.com/erik4/redis-com-client.json b/clients/other-clients/activex-com/gitlab.com/erik4/redis-com-client.json similarity index 100% rename from clients/activex-com/gitlab.com/erik4/redis-com-client.json rename to clients/other-clients/activex-com/gitlab.com/erik4/redis-com-client.json diff --git a/clients/ballerina/github.com/ballerina-platform/module-ballerinax-redis.json b/clients/other-clients/ballerina/github.com/ballerina-platform/module-ballerinax-redis.json similarity index 100% rename from clients/ballerina/github.com/ballerina-platform/module-ballerinax-redis.json rename to clients/other-clients/ballerina/github.com/ballerina-platform/module-ballerinax-redis.json diff --git a/clients/bash/github.com/SomajitDey/redis-client.json b/clients/other-clients/bash/github.com/SomajitDey/redis-client.json similarity index 100% rename from clients/bash/github.com/SomajitDey/redis-client.json rename to clients/other-clients/bash/github.com/SomajitDey/redis-client.json diff --git a/clients/bash/github.com/caquino/redis-bash.json b/clients/other-clients/bash/github.com/caquino/redis-bash.json similarity index 100% rename from clients/bash/github.com/caquino/redis-bash.json rename to clients/other-clients/bash/github.com/caquino/redis-bash.json diff --git a/clients/bash/github.com/crypt1d/redi.sh.json b/clients/other-clients/bash/github.com/crypt1d/redi.sh.json similarity index 100% rename from clients/bash/github.com/crypt1d/redi.sh.json rename to clients/other-clients/bash/github.com/crypt1d/redi.sh.json diff --git a/clients/boomi/github.com/zachary-samsel/boomi-redis-connector.json b/clients/other-clients/boomi/github.com/zachary-samsel/boomi-redis-connector.json similarity index 100% rename from clients/boomi/github.com/zachary-samsel/boomi-redis-connector.json rename to clients/other-clients/boomi/github.com/zachary-samsel/boomi-redis-connector.json diff --git a/clients/c/code.google.com/p/credis/source/browse.json b/clients/other-clients/c/code.google.com/p/credis/source/browse.json similarity index 100% rename from clients/c/code.google.com/p/credis/source/browse.json rename to clients/other-clients/c/code.google.com/p/credis/source/browse.json diff --git a/clients/c/github.com/EulerianTechnologies/eredis.json b/clients/other-clients/c/github.com/EulerianTechnologies/eredis.json similarity index 100% rename from clients/c/github.com/EulerianTechnologies/eredis.json rename to clients/other-clients/c/github.com/EulerianTechnologies/eredis.json diff --git a/clients/c/github.com/Nordix/hiredis-cluster.json b/clients/other-clients/c/github.com/Nordix/hiredis-cluster.json similarity index 100% rename from clients/c/github.com/Nordix/hiredis-cluster.json rename to clients/other-clients/c/github.com/Nordix/hiredis-cluster.json diff --git a/clients/c/github.com/aclisp/hiredispool.json b/clients/other-clients/c/github.com/aclisp/hiredispool.json similarity index 100% rename from clients/c/github.com/aclisp/hiredispool.json rename to clients/other-clients/c/github.com/aclisp/hiredispool.json diff --git a/clients/c/github.com/redis/hiredis.json b/clients/other-clients/c/github.com/redis/hiredis.json similarity index 100% rename from clients/c/github.com/redis/hiredis.json rename to clients/other-clients/c/github.com/redis/hiredis.json diff --git a/clients/c/github.com/toymachine/libredis.json b/clients/other-clients/c/github.com/toymachine/libredis.json similarity index 100% rename from clients/c/github.com/toymachine/libredis.json rename to clients/other-clients/c/github.com/toymachine/libredis.json diff --git a/clients/c/github.com/vipshop/hiredis-vip.json b/clients/other-clients/c/github.com/vipshop/hiredis-vip.json similarity index 100% rename from clients/c/github.com/vipshop/hiredis-vip.json rename to clients/other-clients/c/github.com/vipshop/hiredis-vip.json diff --git a/clients/clojure/github.com/ptaoussanis/carmine.json b/clients/other-clients/clojure/github.com/ptaoussanis/carmine.json similarity index 100% rename from clients/clojure/github.com/ptaoussanis/carmine.json rename to clients/other-clients/clojure/github.com/ptaoussanis/carmine.json diff --git a/clients/common-lisp/github.com/vseloved/cl-redis.json b/clients/other-clients/common-lisp/github.com/vseloved/cl-redis.json similarity index 100% rename from clients/common-lisp/github.com/vseloved/cl-redis.json rename to clients/other-clients/common-lisp/github.com/vseloved/cl-redis.json diff --git a/clients/cpp/github.com/0xsky/xredis.json b/clients/other-clients/cpp/github.com/0xsky/xredis.json similarity index 100% rename from clients/cpp/github.com/0xsky/xredis.json rename to clients/other-clients/cpp/github.com/0xsky/xredis.json diff --git a/clients/cpp/github.com/Levhav/SimpleRedisClient.json b/clients/other-clients/cpp/github.com/Levhav/SimpleRedisClient.json similarity index 100% rename from clients/cpp/github.com/Levhav/SimpleRedisClient.json rename to clients/other-clients/cpp/github.com/Levhav/SimpleRedisClient.json diff --git a/clients/cpp/github.com/acl-dev/acl/tree/master/lib_acl_cpp/include/acl_cpp/redis.json b/clients/other-clients/cpp/github.com/acl-dev/acl/tree/master/lib_acl_cpp/include/acl_cpp/redis.json similarity index 100% rename from clients/cpp/github.com/acl-dev/acl/tree/master/lib_acl_cpp/include/acl_cpp/redis.json rename to clients/other-clients/cpp/github.com/acl-dev/acl/tree/master/lib_acl_cpp/include/acl_cpp/redis.json diff --git a/clients/cpp/github.com/basiliscos/cpp-bredis.json b/clients/other-clients/cpp/github.com/basiliscos/cpp-bredis.json similarity index 100% rename from clients/cpp/github.com/basiliscos/cpp-bredis.json rename to clients/other-clients/cpp/github.com/basiliscos/cpp-bredis.json diff --git a/clients/cpp/github.com/cpp-redis/cpp_redis.json b/clients/other-clients/cpp/github.com/cpp-redis/cpp_redis.json similarity index 100% rename from clients/cpp/github.com/cpp-redis/cpp_redis.json rename to clients/other-clients/cpp/github.com/cpp-redis/cpp_redis.json diff --git a/clients/cpp/github.com/eyjian/r3c.json b/clients/other-clients/cpp/github.com/eyjian/r3c.json similarity index 100% rename from clients/cpp/github.com/eyjian/r3c.json rename to clients/other-clients/cpp/github.com/eyjian/r3c.json diff --git a/clients/cpp/github.com/hamidr/async-redis.json b/clients/other-clients/cpp/github.com/hamidr/async-redis.json similarity index 100% rename from clients/cpp/github.com/hamidr/async-redis.json rename to clients/other-clients/cpp/github.com/hamidr/async-redis.json diff --git a/clients/cpp/github.com/hmartiro/redox.json b/clients/other-clients/cpp/github.com/hmartiro/redox.json similarity index 100% rename from clients/cpp/github.com/hmartiro/redox.json rename to clients/other-clients/cpp/github.com/hmartiro/redox.json diff --git a/clients/cpp/github.com/icerlion/FlyRedis.json b/clients/other-clients/cpp/github.com/icerlion/FlyRedis.json similarity index 100% rename from clients/cpp/github.com/icerlion/FlyRedis.json rename to clients/other-clients/cpp/github.com/icerlion/FlyRedis.json diff --git a/clients/cpp/github.com/luca3m/redis3m.json b/clients/other-clients/cpp/github.com/luca3m/redis3m.json similarity index 100% rename from clients/cpp/github.com/luca3m/redis3m.json rename to clients/other-clients/cpp/github.com/luca3m/redis3m.json diff --git a/clients/cpp/github.com/mrpi/redis-cplusplus-client.json b/clients/other-clients/cpp/github.com/mrpi/redis-cplusplus-client.json similarity index 100% rename from clients/cpp/github.com/mrpi/redis-cplusplus-client.json rename to clients/other-clients/cpp/github.com/mrpi/redis-cplusplus-client.json diff --git a/clients/cpp/github.com/mzimbres/aedis.json b/clients/other-clients/cpp/github.com/mzimbres/aedis.json similarity index 100% rename from clients/cpp/github.com/mzimbres/aedis.json rename to clients/other-clients/cpp/github.com/mzimbres/aedis.json diff --git a/clients/cpp/github.com/nekipelov/redisclient.json b/clients/other-clients/cpp/github.com/nekipelov/redisclient.json similarity index 100% rename from clients/cpp/github.com/nekipelov/redisclient.json rename to clients/other-clients/cpp/github.com/nekipelov/redisclient.json diff --git a/clients/cpp/github.com/nokia/wiredis.json b/clients/other-clients/cpp/github.com/nokia/wiredis.json similarity index 100% rename from clients/cpp/github.com/nokia/wiredis.json rename to clients/other-clients/cpp/github.com/nokia/wiredis.json diff --git a/clients/cpp/github.com/sewenew/redis-plus-plus.json b/clients/other-clients/cpp/github.com/sewenew/redis-plus-plus.json similarity index 100% rename from clients/cpp/github.com/sewenew/redis-plus-plus.json rename to clients/other-clients/cpp/github.com/sewenew/redis-plus-plus.json diff --git a/clients/cpp/github.com/shawn246/redis_client.json b/clients/other-clients/cpp/github.com/shawn246/redis_client.json similarity index 100% rename from clients/cpp/github.com/shawn246/redis_client.json rename to clients/other-clients/cpp/github.com/shawn246/redis_client.json diff --git a/clients/cpp/github.com/tdv/redis-cpp.json b/clients/other-clients/cpp/github.com/tdv/redis-cpp.json similarity index 100% rename from clients/cpp/github.com/tdv/redis-cpp.json rename to clients/other-clients/cpp/github.com/tdv/redis-cpp.json diff --git a/clients/cpp/github.com/uglide/qredisclient.json b/clients/other-clients/cpp/github.com/uglide/qredisclient.json similarity index 100% rename from clients/cpp/github.com/uglide/qredisclient.json rename to clients/other-clients/cpp/github.com/uglide/qredisclient.json diff --git a/clients/cpp/github.com/wusongwei/soce.json b/clients/other-clients/cpp/github.com/wusongwei/soce.json similarity index 100% rename from clients/cpp/github.com/wusongwei/soce.json rename to clients/other-clients/cpp/github.com/wusongwei/soce.json diff --git a/clients/crystal/github.com/stefanwille/crystal-redis.json b/clients/other-clients/crystal/github.com/stefanwille/crystal-redis.json similarity index 100% rename from clients/crystal/github.com/stefanwille/crystal-redis.json rename to clients/other-clients/crystal/github.com/stefanwille/crystal-redis.json diff --git a/clients/csharp/github.com/2881099/FreeRedis.json b/clients/other-clients/csharp/github.com/2881099/FreeRedis.json similarity index 100% rename from clients/csharp/github.com/2881099/FreeRedis.json rename to clients/other-clients/csharp/github.com/2881099/FreeRedis.json diff --git a/clients/csharp/github.com/IKende/BeetleX.Redis.json b/clients/other-clients/csharp/github.com/IKende/BeetleX.Redis.json similarity index 100% rename from clients/csharp/github.com/IKende/BeetleX.Redis.json rename to clients/other-clients/csharp/github.com/IKende/BeetleX.Redis.json diff --git a/clients/csharp/github.com/NewLifeX/NewLife.Redis.json b/clients/other-clients/csharp/github.com/NewLifeX/NewLife.Redis.json similarity index 100% rename from clients/csharp/github.com/NewLifeX/NewLife.Redis.json rename to clients/other-clients/csharp/github.com/NewLifeX/NewLife.Redis.json diff --git a/clients/csharp/github.com/ServiceStack/ServiceStack.Redis.json b/clients/other-clients/csharp/github.com/ServiceStack/ServiceStack.Redis.json similarity index 100% rename from clients/csharp/github.com/ServiceStack/ServiceStack.Redis.json rename to clients/other-clients/csharp/github.com/ServiceStack/ServiceStack.Redis.json diff --git a/clients/csharp/github.com/StackExchange/StackExchange.Redis.json b/clients/other-clients/csharp/github.com/StackExchange/StackExchange.Redis.json similarity index 100% rename from clients/csharp/github.com/StackExchange/StackExchange.Redis.json rename to clients/other-clients/csharp/github.com/StackExchange/StackExchange.Redis.json diff --git a/clients/csharp/github.com/andrew-bn/RedisBoost.json b/clients/other-clients/csharp/github.com/andrew-bn/RedisBoost.json similarity index 100% rename from clients/csharp/github.com/andrew-bn/RedisBoost.json rename to clients/other-clients/csharp/github.com/andrew-bn/RedisBoost.json diff --git a/clients/csharp/github.com/ctstone/csredis.json b/clients/other-clients/csharp/github.com/ctstone/csredis.json similarity index 100% rename from clients/csharp/github.com/ctstone/csredis.json rename to clients/other-clients/csharp/github.com/ctstone/csredis.json diff --git a/clients/csharp/github.com/mhowlett/Nhiredis.json b/clients/other-clients/csharp/github.com/mhowlett/Nhiredis.json similarity index 100% rename from clients/csharp/github.com/mhowlett/Nhiredis.json rename to clients/other-clients/csharp/github.com/mhowlett/Nhiredis.json diff --git a/clients/csharp/github.com/migueldeicaza/redis-sharp.json b/clients/other-clients/csharp/github.com/migueldeicaza/redis-sharp.json similarity index 100% rename from clients/csharp/github.com/migueldeicaza/redis-sharp.json rename to clients/other-clients/csharp/github.com/migueldeicaza/redis-sharp.json diff --git a/clients/csharp/github.com/pepelev/Rediska.json b/clients/other-clients/csharp/github.com/pepelev/Rediska.json similarity index 100% rename from clients/csharp/github.com/pepelev/Rediska.json rename to clients/other-clients/csharp/github.com/pepelev/Rediska.json diff --git a/clients/csharp/github.com/redis/NRedisStack.json b/clients/other-clients/csharp/github.com/redis/NRedisStack.json similarity index 100% rename from clients/csharp/github.com/redis/NRedisStack.json rename to clients/other-clients/csharp/github.com/redis/NRedisStack.json diff --git a/clients/csharp/github.com/zhuovi/XiaoFeng.Redis.json b/clients/other-clients/csharp/github.com/zhuovi/XiaoFeng.Redis.json similarity index 100% rename from clients/csharp/github.com/zhuovi/XiaoFeng.Redis.json rename to clients/other-clients/csharp/github.com/zhuovi/XiaoFeng.Redis.json diff --git a/clients/csharp/www.nuget.org/packages/Sider.json b/clients/other-clients/csharp/www.nuget.org/packages/Sider.json similarity index 100% rename from clients/csharp/www.nuget.org/packages/Sider.json rename to clients/other-clients/csharp/www.nuget.org/packages/Sider.json diff --git a/clients/d/github.com/adilbaig/Tiny-Redis.json b/clients/other-clients/d/github.com/adilbaig/Tiny-Redis.json similarity index 100% rename from clients/d/github.com/adilbaig/Tiny-Redis.json rename to clients/other-clients/d/github.com/adilbaig/Tiny-Redis.json diff --git a/clients/dart/github.com/SiLeader/dedis.json b/clients/other-clients/dart/github.com/SiLeader/dedis.json similarity index 100% rename from clients/dart/github.com/SiLeader/dedis.json rename to clients/other-clients/dart/github.com/SiLeader/dedis.json diff --git a/clients/dart/github.com/dartist/redis_client.json b/clients/other-clients/dart/github.com/dartist/redis_client.json similarity index 100% rename from clients/dart/github.com/dartist/redis_client.json rename to clients/other-clients/dart/github.com/dartist/redis_client.json diff --git a/clients/dart/github.com/himulawang/i_redis.json b/clients/other-clients/dart/github.com/himulawang/i_redis.json similarity index 100% rename from clients/dart/github.com/himulawang/i_redis.json rename to clients/other-clients/dart/github.com/himulawang/i_redis.json diff --git a/clients/dart/github.com/jcmellado/dartis.json b/clients/other-clients/dart/github.com/jcmellado/dartis.json similarity index 100% rename from clients/dart/github.com/jcmellado/dartis.json rename to clients/other-clients/dart/github.com/jcmellado/dartis.json diff --git a/clients/dart/github.com/ra1u/redis-dart.json b/clients/other-clients/dart/github.com/ra1u/redis-dart.json similarity index 100% rename from clients/dart/github.com/ra1u/redis-dart.json rename to clients/other-clients/dart/github.com/ra1u/redis-dart.json diff --git a/clients/delphi/github.com/danieleteti/delphiredisclient.json b/clients/other-clients/delphi/github.com/danieleteti/delphiredisclient.json similarity index 100% rename from clients/delphi/github.com/danieleteti/delphiredisclient.json rename to clients/other-clients/delphi/github.com/danieleteti/delphiredisclient.json diff --git a/clients/deno/github.com/denodrivers/redis.json b/clients/other-clients/deno/github.com/denodrivers/redis.json similarity index 100% rename from clients/deno/github.com/denodrivers/redis.json rename to clients/other-clients/deno/github.com/denodrivers/redis.json diff --git a/clients/deno/github.com/iuioiua/r2d2.json b/clients/other-clients/deno/github.com/iuioiua/r2d2.json similarity index 100% rename from clients/deno/github.com/iuioiua/r2d2.json rename to clients/other-clients/deno/github.com/iuioiua/r2d2.json diff --git a/clients/elixir/github.com/artemeff/exredis.json b/clients/other-clients/elixir/github.com/artemeff/exredis.json similarity index 100% rename from clients/elixir/github.com/artemeff/exredis.json rename to clients/other-clients/elixir/github.com/artemeff/exredis.json diff --git a/clients/elixir/github.com/whatyouhide/redix.json b/clients/other-clients/elixir/github.com/whatyouhide/redix.json similarity index 100% rename from clients/elixir/github.com/whatyouhide/redix.json rename to clients/other-clients/elixir/github.com/whatyouhide/redix.json diff --git a/clients/emacs-lisp/code.google.com/p/eredis.json b/clients/other-clients/emacs-lisp/code.google.com/p/eredis.json similarity index 100% rename from clients/emacs-lisp/code.google.com/p/eredis.json rename to clients/other-clients/emacs-lisp/code.google.com/p/eredis.json diff --git a/clients/erlang/github.com/HalloAppInc/ecredis.json b/clients/other-clients/erlang/github.com/HalloAppInc/ecredis.json similarity index 100% rename from clients/erlang/github.com/HalloAppInc/ecredis.json rename to clients/other-clients/erlang/github.com/HalloAppInc/ecredis.json diff --git a/clients/erlang/github.com/Nordix/eredis.json b/clients/other-clients/erlang/github.com/Nordix/eredis.json similarity index 100% rename from clients/erlang/github.com/Nordix/eredis.json rename to clients/other-clients/erlang/github.com/Nordix/eredis.json diff --git a/clients/erlang/github.com/Nordix/eredis_cluster.json b/clients/other-clients/erlang/github.com/Nordix/eredis_cluster.json similarity index 100% rename from clients/erlang/github.com/Nordix/eredis_cluster.json rename to clients/other-clients/erlang/github.com/Nordix/eredis_cluster.json diff --git a/clients/erlang/github.com/adrienmo/eredis_cluster.json b/clients/other-clients/erlang/github.com/adrienmo/eredis_cluster.json similarity index 100% rename from clients/erlang/github.com/adrienmo/eredis_cluster.json rename to clients/other-clients/erlang/github.com/adrienmo/eredis_cluster.json diff --git a/clients/erlang/github.com/wooga/eredis.json b/clients/other-clients/erlang/github.com/wooga/eredis.json similarity index 100% rename from clients/erlang/github.com/wooga/eredis.json rename to clients/other-clients/erlang/github.com/wooga/eredis.json diff --git a/clients/gawk/sourceforge.net/projects/gawkextlib.json b/clients/other-clients/gawk/sourceforge.net/projects/gawkextlib.json similarity index 100% rename from clients/gawk/sourceforge.net/projects/gawkextlib.json rename to clients/other-clients/gawk/sourceforge.net/projects/gawkextlib.json diff --git a/clients/gleam/github.com/massivefermion/radish.json b/clients/other-clients/gleam/github.com/massivefermion/radish.json similarity index 100% rename from clients/gleam/github.com/massivefermion/radish.json rename to clients/other-clients/gleam/github.com/massivefermion/radish.json diff --git a/clients/gnu-prolog/github.com/emacstheviking/gnuprolog-redisclient.json b/clients/other-clients/gnu-prolog/github.com/emacstheviking/gnuprolog-redisclient.json similarity index 100% rename from clients/gnu-prolog/github.com/emacstheviking/gnuprolog-redisclient.json rename to clients/other-clients/gnu-prolog/github.com/emacstheviking/gnuprolog-redisclient.json diff --git a/clients/go/github.com/alphazero/Go-Redis.json b/clients/other-clients/go/github.com/alphazero/Go-Redis.json similarity index 100% rename from clients/go/github.com/alphazero/Go-Redis.json rename to clients/other-clients/go/github.com/alphazero/Go-Redis.json diff --git a/clients/go/github.com/gistao/RedisGo-Async.json b/clients/other-clients/go/github.com/gistao/RedisGo-Async.json similarity index 100% rename from clients/go/github.com/gistao/RedisGo-Async.json rename to clients/other-clients/go/github.com/gistao/RedisGo-Async.json diff --git a/clients/go/github.com/gomodule/redigo.json b/clients/other-clients/go/github.com/gomodule/redigo.json similarity index 100% rename from clients/go/github.com/gomodule/redigo.json rename to clients/other-clients/go/github.com/gomodule/redigo.json diff --git a/clients/go/github.com/gosexy/redis.json b/clients/other-clients/go/github.com/gosexy/redis.json similarity index 100% rename from clients/go/github.com/gosexy/redis.json rename to clients/other-clients/go/github.com/gosexy/redis.json diff --git a/clients/go/github.com/hoisie/redis.json b/clients/other-clients/go/github.com/hoisie/redis.json similarity index 100% rename from clients/go/github.com/hoisie/redis.json rename to clients/other-clients/go/github.com/hoisie/redis.json diff --git a/clients/go/github.com/joomcode/redispipe.json b/clients/other-clients/go/github.com/joomcode/redispipe.json similarity index 100% rename from clients/go/github.com/joomcode/redispipe.json rename to clients/other-clients/go/github.com/joomcode/redispipe.json diff --git a/clients/go/github.com/keimoon/gore.json b/clients/other-clients/go/github.com/keimoon/gore.json similarity index 100% rename from clients/go/github.com/keimoon/gore.json rename to clients/other-clients/go/github.com/keimoon/gore.json diff --git a/clients/go/github.com/mediocregopher/radix.json b/clients/other-clients/go/github.com/mediocregopher/radix.json similarity index 100% rename from clients/go/github.com/mediocregopher/radix.json rename to clients/other-clients/go/github.com/mediocregopher/radix.json diff --git a/clients/go/github.com/pascaldekloe/redis.json b/clients/other-clients/go/github.com/pascaldekloe/redis.json similarity index 100% rename from clients/go/github.com/pascaldekloe/redis.json rename to clients/other-clients/go/github.com/pascaldekloe/redis.json diff --git a/clients/go/github.com/piaohao/godis.json b/clients/other-clients/go/github.com/piaohao/godis.json similarity index 100% rename from clients/go/github.com/piaohao/godis.json rename to clients/other-clients/go/github.com/piaohao/godis.json diff --git a/clients/go/github.com/redis/go-redis.json b/clients/other-clients/go/github.com/redis/go-redis.json similarity index 100% rename from clients/go/github.com/redis/go-redis.json rename to clients/other-clients/go/github.com/redis/go-redis.json diff --git a/clients/go/github.com/rueian/rueidis.json b/clients/other-clients/go/github.com/rueian/rueidis.json similarity index 100% rename from clients/go/github.com/rueian/rueidis.json rename to clients/other-clients/go/github.com/rueian/rueidis.json diff --git a/clients/go/github.com/shipwire/redis.json b/clients/other-clients/go/github.com/shipwire/redis.json similarity index 100% rename from clients/go/github.com/shipwire/redis.json rename to clients/other-clients/go/github.com/shipwire/redis.json diff --git a/clients/go/github.com/simonz05/godis.json b/clients/other-clients/go/github.com/simonz05/godis.json similarity index 100% rename from clients/go/github.com/simonz05/godis.json rename to clients/other-clients/go/github.com/simonz05/godis.json diff --git a/clients/go/github.com/stfnmllr/go-resp3.json b/clients/other-clients/go/github.com/stfnmllr/go-resp3.json similarity index 100% rename from clients/go/github.com/stfnmllr/go-resp3.json rename to clients/other-clients/go/github.com/stfnmllr/go-resp3.json diff --git a/clients/go/github.com/tideland/golib.json b/clients/other-clients/go/github.com/tideland/golib.json similarity index 100% rename from clients/go/github.com/tideland/golib.json rename to clients/other-clients/go/github.com/tideland/golib.json diff --git a/clients/go/github.com/xuyu/goredis.json b/clients/other-clients/go/github.com/xuyu/goredis.json similarity index 100% rename from clients/go/github.com/xuyu/goredis.json rename to clients/other-clients/go/github.com/xuyu/goredis.json diff --git a/clients/haskell/github.com/informatikr/hedis.json b/clients/other-clients/haskell/github.com/informatikr/hedis.json similarity index 100% rename from clients/haskell/github.com/informatikr/hedis.json rename to clients/other-clients/haskell/github.com/informatikr/hedis.json diff --git a/clients/io/github.com/vangberg/iodis.json b/clients/other-clients/io/github.com/vangberg/iodis.json similarity index 100% rename from clients/io/github.com/vangberg/iodis.json rename to clients/other-clients/io/github.com/vangberg/iodis.json diff --git a/clients/java/code.google.com/p/jdbc-redis/source/browse.json b/clients/other-clients/java/code.google.com/p/jdbc-redis/source/browse.json similarity index 100% rename from clients/java/code.google.com/p/jdbc-redis/source/browse.json rename to clients/other-clients/java/code.google.com/p/jdbc-redis/source/browse.json diff --git a/clients/java/github.com/alphazero/jredis.json b/clients/other-clients/java/github.com/alphazero/jredis.json similarity index 100% rename from clients/java/github.com/alphazero/jredis.json rename to clients/other-clients/java/github.com/alphazero/jredis.json diff --git a/clients/java/github.com/drm/java-redis-client.json b/clients/other-clients/java/github.com/drm/java-redis-client.json similarity index 100% rename from clients/java/github.com/drm/java-redis-client.json rename to clients/other-clients/java/github.com/drm/java-redis-client.json diff --git a/clients/java/github.com/e-mzungu/rjc.json b/clients/other-clients/java/github.com/e-mzungu/rjc.json similarity index 100% rename from clients/java/github.com/e-mzungu/rjc.json rename to clients/other-clients/java/github.com/e-mzungu/rjc.json diff --git a/clients/java/github.com/lettuce-io/lettuce-core.json b/clients/other-clients/java/github.com/lettuce-io/lettuce-core.json similarity index 100% rename from clients/java/github.com/lettuce-io/lettuce-core.json rename to clients/other-clients/java/github.com/lettuce-io/lettuce-core.json diff --git a/clients/java/github.com/mrniko/redisson.json b/clients/other-clients/java/github.com/mrniko/redisson.json similarity index 100% rename from clients/java/github.com/mrniko/redisson.json rename to clients/other-clients/java/github.com/mrniko/redisson.json diff --git a/clients/java/github.com/redis/jedis.json b/clients/other-clients/java/github.com/redis/jedis.json similarity index 100% rename from clients/java/github.com/redis/jedis.json rename to clients/other-clients/java/github.com/redis/jedis.json diff --git a/clients/java/github.com/spullara/redis-protocol.json b/clients/other-clients/java/github.com/spullara/redis-protocol.json similarity index 100% rename from clients/java/github.com/spullara/redis-protocol.json rename to clients/other-clients/java/github.com/spullara/redis-protocol.json diff --git a/clients/java/github.com/vert-x3/vertx-redis-client.json b/clients/other-clients/java/github.com/vert-x3/vertx-redis-client.json similarity index 100% rename from clients/java/github.com/vert-x3/vertx-redis-client.json rename to clients/other-clients/java/github.com/vert-x3/vertx-redis-client.json diff --git a/clients/java/github.com/virendradhankar/viredis.json b/clients/other-clients/java/github.com/virendradhankar/viredis.json similarity index 100% rename from clients/java/github.com/virendradhankar/viredis.json rename to clients/other-clients/java/github.com/virendradhankar/viredis.json diff --git a/clients/java/sourceforge.net/projects/aredis.json b/clients/other-clients/java/sourceforge.net/projects/aredis.json similarity index 100% rename from clients/java/sourceforge.net/projects/aredis.json rename to clients/other-clients/java/sourceforge.net/projects/aredis.json diff --git a/clients/julia/github.com/captchanjack/Jedis.jl.json b/clients/other-clients/julia/github.com/captchanjack/Jedis.jl.json similarity index 100% rename from clients/julia/github.com/captchanjack/Jedis.jl.json rename to clients/other-clients/julia/github.com/captchanjack/Jedis.jl.json diff --git a/clients/julia/github.com/jkaye2012/redis.jl.json b/clients/other-clients/julia/github.com/jkaye2012/redis.jl.json similarity index 100% rename from clients/julia/github.com/jkaye2012/redis.jl.json rename to clients/other-clients/julia/github.com/jkaye2012/redis.jl.json diff --git a/clients/kotlin/github.com/crackthecodeabhi/kreds.json b/clients/other-clients/kotlin/github.com/crackthecodeabhi/kreds.json similarity index 100% rename from clients/kotlin/github.com/crackthecodeabhi/kreds.json rename to clients/other-clients/kotlin/github.com/crackthecodeabhi/kreds.json diff --git a/clients/kotlin/github.com/domgew/kedis.json b/clients/other-clients/kotlin/github.com/domgew/kedis.json similarity index 100% rename from clients/kotlin/github.com/domgew/kedis.json rename to clients/other-clients/kotlin/github.com/domgew/kedis.json diff --git a/clients/lasso/github.com/Zeroloop/lasso-redis.json b/clients/other-clients/lasso/github.com/Zeroloop/lasso-redis.json similarity index 100% rename from clients/lasso/github.com/Zeroloop/lasso-redis.json rename to clients/other-clients/lasso/github.com/Zeroloop/lasso-redis.json diff --git a/clients/lua/github.com/agladysh/lua-hiredis.json b/clients/other-clients/lua/github.com/agladysh/lua-hiredis.json similarity index 100% rename from clients/lua/github.com/agladysh/lua-hiredis.json rename to clients/other-clients/lua/github.com/agladysh/lua-hiredis.json diff --git a/clients/lua/github.com/daurnimator/lredis.json b/clients/other-clients/lua/github.com/daurnimator/lredis.json similarity index 100% rename from clients/lua/github.com/daurnimator/lredis.json rename to clients/other-clients/lua/github.com/daurnimator/lredis.json diff --git a/clients/lua/github.com/nrk/redis-lua.json b/clients/other-clients/lua/github.com/nrk/redis-lua.json similarity index 100% rename from clients/lua/github.com/nrk/redis-lua.json rename to clients/other-clients/lua/github.com/nrk/redis-lua.json diff --git a/clients/matlab/github.com/GummyJum/MatlabRedis.json b/clients/other-clients/matlab/github.com/GummyJum/MatlabRedis.json similarity index 100% rename from clients/matlab/github.com/GummyJum/MatlabRedis.json rename to clients/other-clients/matlab/github.com/GummyJum/MatlabRedis.json diff --git a/clients/matlab/github.com/markuman/go-redis.json b/clients/other-clients/matlab/github.com/markuman/go-redis.json similarity index 100% rename from clients/matlab/github.com/markuman/go-redis.json rename to clients/other-clients/matlab/github.com/markuman/go-redis.json diff --git a/clients/mruby/github.com/Asmod4n/mruby-hiredis.json b/clients/other-clients/mruby/github.com/Asmod4n/mruby-hiredis.json similarity index 100% rename from clients/mruby/github.com/Asmod4n/mruby-hiredis.json rename to clients/other-clients/mruby/github.com/Asmod4n/mruby-hiredis.json diff --git a/clients/mruby/github.com/matsumoto-r/mruby-redis.json b/clients/other-clients/mruby/github.com/matsumoto-r/mruby-redis.json similarity index 100% rename from clients/mruby/github.com/matsumoto-r/mruby-redis.json rename to clients/other-clients/mruby/github.com/matsumoto-r/mruby-redis.json diff --git a/clients/nim/github.com/nim-lang/redis.json b/clients/other-clients/nim/github.com/nim-lang/redis.json similarity index 100% rename from clients/nim/github.com/nim-lang/redis.json rename to clients/other-clients/nim/github.com/nim-lang/redis.json diff --git a/clients/nim/github.com/xmonader/nim-redisclient.json b/clients/other-clients/nim/github.com/xmonader/nim-redisclient.json similarity index 100% rename from clients/nim/github.com/xmonader/nim-redisclient.json rename to clients/other-clients/nim/github.com/xmonader/nim-redisclient.json diff --git a/clients/nodejs/github.com/CapacitorSet/rebridge.json b/clients/other-clients/nodejs/github.com/CapacitorSet/rebridge.json similarity index 100% rename from clients/nodejs/github.com/CapacitorSet/rebridge.json rename to clients/other-clients/nodejs/github.com/CapacitorSet/rebridge.json diff --git a/clients/nodejs/github.com/anchovycation/metronom.json b/clients/other-clients/nodejs/github.com/anchovycation/metronom.json similarity index 100% rename from clients/nodejs/github.com/anchovycation/metronom.json rename to clients/other-clients/nodejs/github.com/anchovycation/metronom.json diff --git a/clients/nodejs/github.com/camarojs/redis.json b/clients/other-clients/nodejs/github.com/camarojs/redis.json similarity index 100% rename from clients/nodejs/github.com/camarojs/redis.json rename to clients/other-clients/nodejs/github.com/camarojs/redis.json diff --git a/clients/nodejs/github.com/djanowski/yoredis.json b/clients/other-clients/nodejs/github.com/djanowski/yoredis.json similarity index 100% rename from clients/nodejs/github.com/djanowski/yoredis.json rename to clients/other-clients/nodejs/github.com/djanowski/yoredis.json diff --git a/clients/nodejs/github.com/fictorial/redis-node-client.json b/clients/other-clients/nodejs/github.com/fictorial/redis-node-client.json similarity index 100% rename from clients/nodejs/github.com/fictorial/redis-node-client.json rename to clients/other-clients/nodejs/github.com/fictorial/redis-node-client.json diff --git a/clients/nodejs/github.com/h0x91b/fast-redis-cluster.json b/clients/other-clients/nodejs/github.com/h0x91b/fast-redis-cluster.json similarity index 100% rename from clients/nodejs/github.com/h0x91b/fast-redis-cluster.json rename to clients/other-clients/nodejs/github.com/h0x91b/fast-redis-cluster.json diff --git a/clients/nodejs/github.com/h0x91b/redis-fast-driver.json b/clients/other-clients/nodejs/github.com/h0x91b/redis-fast-driver.json similarity index 100% rename from clients/nodejs/github.com/h0x91b/redis-fast-driver.json rename to clients/other-clients/nodejs/github.com/h0x91b/redis-fast-driver.json diff --git a/clients/nodejs/github.com/luin/ioredis.json b/clients/other-clients/nodejs/github.com/luin/ioredis.json similarity index 100% rename from clients/nodejs/github.com/luin/ioredis.json rename to clients/other-clients/nodejs/github.com/luin/ioredis.json diff --git a/clients/nodejs/github.com/mjackson/then-redis.json b/clients/other-clients/nodejs/github.com/mjackson/then-redis.json similarity index 100% rename from clients/nodejs/github.com/mjackson/then-redis.json rename to clients/other-clients/nodejs/github.com/mjackson/then-redis.json diff --git a/clients/nodejs/github.com/mmkal/handy-redis.json b/clients/other-clients/nodejs/github.com/mmkal/handy-redis.json similarity index 100% rename from clients/nodejs/github.com/mmkal/handy-redis.json rename to clients/other-clients/nodejs/github.com/mmkal/handy-redis.json diff --git a/clients/nodejs/github.com/razaellahi/xredis.json b/clients/other-clients/nodejs/github.com/razaellahi/xredis.json similarity index 100% rename from clients/nodejs/github.com/razaellahi/xredis.json rename to clients/other-clients/nodejs/github.com/razaellahi/xredis.json diff --git a/clients/nodejs/github.com/redis/node-redis.json b/clients/other-clients/nodejs/github.com/redis/node-redis.json similarity index 100% rename from clients/nodejs/github.com/redis/node-redis.json rename to clients/other-clients/nodejs/github.com/redis/node-redis.json diff --git a/clients/nodejs/github.com/rootslab/spade.json b/clients/other-clients/nodejs/github.com/rootslab/spade.json similarity index 100% rename from clients/nodejs/github.com/rootslab/spade.json rename to clients/other-clients/nodejs/github.com/rootslab/spade.json diff --git a/clients/nodejs/github.com/silkjs/tedis.json b/clients/other-clients/nodejs/github.com/silkjs/tedis.json similarity index 100% rename from clients/nodejs/github.com/silkjs/tedis.json rename to clients/other-clients/nodejs/github.com/silkjs/tedis.json diff --git a/clients/nodejs/github.com/thunks/thunk-redis.json b/clients/other-clients/nodejs/github.com/thunks/thunk-redis.json similarity index 100% rename from clients/nodejs/github.com/thunks/thunk-redis.json rename to clients/other-clients/nodejs/github.com/thunks/thunk-redis.json diff --git a/clients/nodejs/github.com/wallneradam/noderis.json b/clients/other-clients/nodejs/github.com/wallneradam/noderis.json similarity index 100% rename from clients/nodejs/github.com/wallneradam/noderis.json rename to clients/other-clients/nodejs/github.com/wallneradam/noderis.json diff --git a/clients/objective-c/github.com/dizzus/RedisKit.json b/clients/other-clients/objective-c/github.com/dizzus/RedisKit.json similarity index 100% rename from clients/objective-c/github.com/dizzus/RedisKit.json rename to clients/other-clients/objective-c/github.com/dizzus/RedisKit.json diff --git a/clients/objective-c/github.com/lp/ObjCHiredis.json b/clients/other-clients/objective-c/github.com/lp/ObjCHiredis.json similarity index 100% rename from clients/objective-c/github.com/lp/ObjCHiredis.json rename to clients/other-clients/objective-c/github.com/lp/ObjCHiredis.json diff --git a/clients/ocaml/github.com/0xffea/ocaml-redis.json b/clients/other-clients/ocaml/github.com/0xffea/ocaml-redis.json similarity index 100% rename from clients/ocaml/github.com/0xffea/ocaml-redis.json rename to clients/other-clients/ocaml/github.com/0xffea/ocaml-redis.json diff --git a/clients/ocaml/github.com/janestreet/redis-async.json b/clients/other-clients/ocaml/github.com/janestreet/redis-async.json similarity index 100% rename from clients/ocaml/github.com/janestreet/redis-async.json rename to clients/other-clients/ocaml/github.com/janestreet/redis-async.json diff --git a/clients/pascal/bitbucket.org/Gloegg/delphi-redis.git.json b/clients/other-clients/pascal/bitbucket.org/Gloegg/delphi-redis.git.json similarity index 100% rename from clients/pascal/bitbucket.org/Gloegg/delphi-redis.git.json rename to clients/other-clients/pascal/bitbucket.org/Gloegg/delphi-redis.git.json diff --git a/clients/pascal/github.com/danieleteti/delphiredisclient.json b/clients/other-clients/pascal/github.com/danieleteti/delphiredisclient.json similarity index 100% rename from clients/pascal/github.com/danieleteti/delphiredisclient.json rename to clients/other-clients/pascal/github.com/danieleteti/delphiredisclient.json diff --git a/clients/pascal/github.com/ik5/redis_client.fpc.json b/clients/other-clients/pascal/github.com/ik5/redis_client.fpc.json similarity index 100% rename from clients/pascal/github.com/ik5/redis_client.fpc.json rename to clients/other-clients/pascal/github.com/ik5/redis_client.fpc.json diff --git a/clients/pascal/github.com/isyscore/fpredis.json b/clients/other-clients/pascal/github.com/isyscore/fpredis.json similarity index 100% rename from clients/pascal/github.com/isyscore/fpredis.json rename to clients/other-clients/pascal/github.com/isyscore/fpredis.json diff --git a/clients/perl/github.com/PerlRedis/perl-redis.json b/clients/other-clients/perl/github.com/PerlRedis/perl-redis.json similarity index 100% rename from clients/perl/github.com/PerlRedis/perl-redis.json rename to clients/other-clients/perl/github.com/PerlRedis/perl-redis.json diff --git a/clients/perl/github.com/iph0/AnyEvent-RipeRedis-Cluster.json b/clients/other-clients/perl/github.com/iph0/AnyEvent-RipeRedis-Cluster.json similarity index 100% rename from clients/perl/github.com/iph0/AnyEvent-RipeRedis-Cluster.json rename to clients/other-clients/perl/github.com/iph0/AnyEvent-RipeRedis-Cluster.json diff --git a/clients/perl/github.com/iph0/AnyEvent-RipeRedis.json b/clients/other-clients/perl/github.com/iph0/AnyEvent-RipeRedis.json similarity index 100% rename from clients/perl/github.com/iph0/AnyEvent-RipeRedis.json rename to clients/other-clients/perl/github.com/iph0/AnyEvent-RipeRedis.json diff --git a/clients/perl/github.com/iph0/Redis-ClusterRider.json b/clients/other-clients/perl/github.com/iph0/Redis-ClusterRider.json similarity index 100% rename from clients/perl/github.com/iph0/Redis-ClusterRider.json rename to clients/other-clients/perl/github.com/iph0/Redis-ClusterRider.json diff --git a/clients/perl/github.com/marcusramberg/mojo-redis.json b/clients/other-clients/perl/github.com/marcusramberg/mojo-redis.json similarity index 100% rename from clients/perl/github.com/marcusramberg/mojo-redis.json rename to clients/other-clients/perl/github.com/marcusramberg/mojo-redis.json diff --git a/clients/perl/github.com/miyagawa/AnyEvent-Redis.json b/clients/other-clients/perl/github.com/miyagawa/AnyEvent-Redis.json similarity index 100% rename from clients/perl/github.com/miyagawa/AnyEvent-Redis.json rename to clients/other-clients/perl/github.com/miyagawa/AnyEvent-Redis.json diff --git a/clients/perl/github.com/plainbanana/Redis-Cluster-Fast.json b/clients/other-clients/perl/github.com/plainbanana/Redis-Cluster-Fast.json similarity index 100% rename from clients/perl/github.com/plainbanana/Redis-Cluster-Fast.json rename to clients/other-clients/perl/github.com/plainbanana/Redis-Cluster-Fast.json diff --git a/clients/perl/github.com/shogo82148/Redis-Fast.json b/clients/other-clients/perl/github.com/shogo82148/Redis-Fast.json similarity index 100% rename from clients/perl/github.com/shogo82148/Redis-Fast.json rename to clients/other-clients/perl/github.com/shogo82148/Redis-Fast.json diff --git a/clients/perl/github.com/smsonline/redis-cluster-perl.json b/clients/other-clients/perl/github.com/smsonline/redis-cluster-perl.json similarity index 100% rename from clients/perl/github.com/smsonline/redis-cluster-perl.json rename to clients/other-clients/perl/github.com/smsonline/redis-cluster-perl.json diff --git a/clients/perl/github.com/trinitum/RedisDB.json b/clients/other-clients/perl/github.com/trinitum/RedisDB.json similarity index 100% rename from clients/perl/github.com/trinitum/RedisDB.json rename to clients/other-clients/perl/github.com/trinitum/RedisDB.json diff --git a/clients/perl/github.com/wjackson/AnyEvent-Hiredis.json b/clients/other-clients/perl/github.com/wjackson/AnyEvent-Hiredis.json similarity index 100% rename from clients/perl/github.com/wjackson/AnyEvent-Hiredis.json rename to clients/other-clients/perl/github.com/wjackson/AnyEvent-Hiredis.json diff --git a/clients/perl/search.cpan.org/dist/Danga-Socket-Redis.json b/clients/other-clients/perl/search.cpan.org/dist/Danga-Socket-Redis.json similarity index 100% rename from clients/perl/search.cpan.org/dist/Danga-Socket-Redis.json rename to clients/other-clients/perl/search.cpan.org/dist/Danga-Socket-Redis.json diff --git a/clients/perl/search.cpan.org/dist/Redis-hiredis.json b/clients/other-clients/perl/search.cpan.org/dist/Redis-hiredis.json similarity index 100% rename from clients/perl/search.cpan.org/dist/Redis-hiredis.json rename to clients/other-clients/perl/search.cpan.org/dist/Redis-hiredis.json diff --git a/clients/php/github.com/amphp/redis.json b/clients/other-clients/php/github.com/amphp/redis.json similarity index 100% rename from clients/php/github.com/amphp/redis.json rename to clients/other-clients/php/github.com/amphp/redis.json diff --git a/clients/php/github.com/cheprasov/php-redis-client.json b/clients/other-clients/php/github.com/cheprasov/php-redis-client.json similarity index 100% rename from clients/php/github.com/cheprasov/php-redis-client.json rename to clients/other-clients/php/github.com/cheprasov/php-redis-client.json diff --git a/clients/php/github.com/colinmollenhour/credis.json b/clients/other-clients/php/github.com/colinmollenhour/credis.json similarity index 100% rename from clients/php/github.com/colinmollenhour/credis.json rename to clients/other-clients/php/github.com/colinmollenhour/credis.json diff --git a/clients/php/github.com/jamescauwelier/PSRedis.json b/clients/other-clients/php/github.com/jamescauwelier/PSRedis.json similarity index 100% rename from clients/php/github.com/jamescauwelier/PSRedis.json rename to clients/other-clients/php/github.com/jamescauwelier/PSRedis.json diff --git a/clients/php/github.com/yampee/Redis.json b/clients/other-clients/php/github.com/yampee/Redis.json similarity index 100% rename from clients/php/github.com/yampee/Redis.json rename to clients/other-clients/php/github.com/yampee/Redis.json diff --git a/clients/php/github.com/ziogas/PHP-Redis-implementation.json b/clients/other-clients/php/github.com/ziogas/PHP-Redis-implementation.json similarity index 100% rename from clients/php/github.com/ziogas/PHP-Redis-implementation.json rename to clients/other-clients/php/github.com/ziogas/PHP-Redis-implementation.json diff --git a/clients/plsql/github.com/SeYoungLee/oredis.json b/clients/other-clients/plsql/github.com/SeYoungLee/oredis.json similarity index 100% rename from clients/plsql/github.com/SeYoungLee/oredis.json rename to clients/other-clients/plsql/github.com/SeYoungLee/oredis.json diff --git a/clients/prolog/github.com/SWI-Prolog/packages-redis.json b/clients/other-clients/prolog/github.com/SWI-Prolog/packages-redis.json similarity index 100% rename from clients/prolog/github.com/SWI-Prolog/packages-redis.json rename to clients/other-clients/prolog/github.com/SWI-Prolog/packages-redis.json diff --git a/clients/pure-data/github.com/lp/puredis.json b/clients/other-clients/pure-data/github.com/lp/puredis.json similarity index 100% rename from clients/pure-data/github.com/lp/puredis.json rename to clients/other-clients/pure-data/github.com/lp/puredis.json diff --git a/clients/python/github.com/DriverX/aioredis-cluster.json b/clients/other-clients/python/github.com/DriverX/aioredis-cluster.json similarity index 100% rename from clients/python/github.com/DriverX/aioredis-cluster.json rename to clients/other-clients/python/github.com/DriverX/aioredis-cluster.json diff --git a/clients/python/github.com/Grokzen/redis-py-cluster.json b/clients/other-clients/python/github.com/Grokzen/redis-py-cluster.json similarity index 100% rename from clients/python/github.com/Grokzen/redis-py-cluster.json rename to clients/other-clients/python/github.com/Grokzen/redis-py-cluster.json diff --git a/clients/python/github.com/KissPeter/redis-streams.json b/clients/other-clients/python/github.com/KissPeter/redis-streams.json similarity index 100% rename from clients/python/github.com/KissPeter/redis-streams.json rename to clients/other-clients/python/github.com/KissPeter/redis-streams.json diff --git a/clients/python/github.com/aallamaa/desir.json b/clients/other-clients/python/github.com/aallamaa/desir.json similarity index 100% rename from clients/python/github.com/aallamaa/desir.json rename to clients/other-clients/python/github.com/aallamaa/desir.json diff --git a/clients/python/github.com/alisaifee/coredis.json b/clients/other-clients/python/github.com/alisaifee/coredis.json similarity index 100% rename from clients/python/github.com/alisaifee/coredis.json rename to clients/other-clients/python/github.com/alisaifee/coredis.json diff --git a/clients/python/github.com/brainix/pottery.json b/clients/other-clients/python/github.com/brainix/pottery.json similarity index 100% rename from clients/python/github.com/brainix/pottery.json rename to clients/other-clients/python/github.com/brainix/pottery.json diff --git a/clients/python/github.com/cf020031308/redisio.json b/clients/other-clients/python/github.com/cf020031308/redisio.json similarity index 100% rename from clients/python/github.com/cf020031308/redisio.json rename to clients/other-clients/python/github.com/cf020031308/redisio.json diff --git a/clients/python/github.com/coleifer/walrus.json b/clients/other-clients/python/github.com/coleifer/walrus.json similarity index 100% rename from clients/python/github.com/coleifer/walrus.json rename to clients/other-clients/python/github.com/coleifer/walrus.json diff --git a/clients/python/github.com/evilkost/brukva.json b/clients/other-clients/python/github.com/evilkost/brukva.json similarity index 100% rename from clients/python/github.com/evilkost/brukva.json rename to clients/other-clients/python/github.com/evilkost/brukva.json diff --git a/clients/python/github.com/fiorix/txredisapi.json b/clients/other-clients/python/github.com/fiorix/txredisapi.json similarity index 100% rename from clients/python/github.com/fiorix/txredisapi.json rename to clients/other-clients/python/github.com/fiorix/txredisapi.json diff --git a/clients/python/github.com/gh0st-work/python_redis_orm.json b/clients/other-clients/python/github.com/gh0st-work/python_redis_orm.json similarity index 100% rename from clients/python/github.com/gh0st-work/python_redis_orm.json rename to clients/other-clients/python/github.com/gh0st-work/python_redis_orm.json diff --git a/clients/python/github.com/groove-x/gxredis.json b/clients/other-clients/python/github.com/groove-x/gxredis.json similarity index 100% rename from clients/python/github.com/groove-x/gxredis.json rename to clients/other-clients/python/github.com/groove-x/gxredis.json diff --git a/clients/python/github.com/jonathanslenders/asyncio-redis.json b/clients/other-clients/python/github.com/jonathanslenders/asyncio-redis.json similarity index 100% rename from clients/python/github.com/jonathanslenders/asyncio-redis.json rename to clients/other-clients/python/github.com/jonathanslenders/asyncio-redis.json diff --git a/clients/python/github.com/khamin/redisca2.json b/clients/other-clients/python/github.com/khamin/redisca2.json similarity index 100% rename from clients/python/github.com/khamin/redisca2.json rename to clients/other-clients/python/github.com/khamin/redisca2.json diff --git a/clients/python/github.com/pepijndevos/pypredis.json b/clients/other-clients/python/github.com/pepijndevos/pypredis.json similarity index 100% rename from clients/python/github.com/pepijndevos/pypredis.json rename to clients/other-clients/python/github.com/pepijndevos/pypredis.json diff --git a/clients/python/github.com/redis/redis-py.json b/clients/other-clients/python/github.com/redis/redis-py.json similarity index 100% rename from clients/python/github.com/redis/redis-py.json rename to clients/other-clients/python/github.com/redis/redis-py.json diff --git a/clients/python/github.com/schlitzered/pyredis.json b/clients/other-clients/python/github.com/schlitzered/pyredis.json similarity index 100% rename from clients/python/github.com/schlitzered/pyredis.json rename to clients/other-clients/python/github.com/schlitzered/pyredis.json diff --git a/clients/python/github.com/thefab/tornadis.json b/clients/other-clients/python/github.com/thefab/tornadis.json similarity index 100% rename from clients/python/github.com/thefab/tornadis.json rename to clients/other-clients/python/github.com/thefab/tornadis.json diff --git a/clients/python/pypi.python.org/pypi/txredis.json b/clients/other-clients/python/pypi.python.org/pypi/txredis.json similarity index 100% rename from clients/python/pypi.python.org/pypi/txredis.json rename to clients/other-clients/python/pypi.python.org/pypi/txredis.json diff --git a/clients/r/bitbucket.org/cmbce/r-package-rediscli.json b/clients/other-clients/r/bitbucket.org/cmbce/r-package-rediscli.json similarity index 100% rename from clients/r/bitbucket.org/cmbce/r-package-rediscli.json rename to clients/other-clients/r/bitbucket.org/cmbce/r-package-rediscli.json diff --git a/clients/r/github.com/bwlewis/rredis.json b/clients/other-clients/r/github.com/bwlewis/rredis.json similarity index 100% rename from clients/r/github.com/bwlewis/rredis.json rename to clients/other-clients/r/github.com/bwlewis/rredis.json diff --git a/clients/r/github.com/eddelbuettel/rcppredis.json b/clients/other-clients/r/github.com/eddelbuettel/rcppredis.json similarity index 100% rename from clients/r/github.com/eddelbuettel/rcppredis.json rename to clients/other-clients/r/github.com/eddelbuettel/rcppredis.json diff --git a/clients/r/github.com/richfitz/redux.json b/clients/other-clients/r/github.com/richfitz/redux.json similarity index 100% rename from clients/r/github.com/richfitz/redux.json rename to clients/other-clients/r/github.com/richfitz/redux.json diff --git a/clients/racket/github.com/eu90h/rackdis.json b/clients/other-clients/racket/github.com/eu90h/rackdis.json similarity index 100% rename from clients/racket/github.com/eu90h/rackdis.json rename to clients/other-clients/racket/github.com/eu90h/rackdis.json diff --git a/clients/racket/github.com/stchang/redis.json b/clients/other-clients/racket/github.com/stchang/redis.json similarity index 100% rename from clients/racket/github.com/stchang/redis.json rename to clients/other-clients/racket/github.com/stchang/redis.json diff --git a/clients/rebol/github.com/rebolek/prot-redis.json b/clients/other-clients/rebol/github.com/rebolek/prot-redis.json similarity index 100% rename from clients/rebol/github.com/rebolek/prot-redis.json rename to clients/other-clients/rebol/github.com/rebolek/prot-redis.json diff --git a/clients/ruby/github.com/amakawa/redic.json b/clients/other-clients/ruby/github.com/amakawa/redic.json similarity index 100% rename from clients/ruby/github.com/amakawa/redic.json rename to clients/other-clients/ruby/github.com/amakawa/redic.json diff --git a/clients/ruby/github.com/bukalapak/redis-cluster.json b/clients/other-clients/ruby/github.com/bukalapak/redis-cluster.json similarity index 100% rename from clients/ruby/github.com/bukalapak/redis-cluster.json rename to clients/other-clients/ruby/github.com/bukalapak/redis-cluster.json diff --git a/clients/ruby/github.com/madsimian/em-redis.json b/clients/other-clients/ruby/github.com/madsimian/em-redis.json similarity index 100% rename from clients/ruby/github.com/madsimian/em-redis.json rename to clients/other-clients/ruby/github.com/madsimian/em-redis.json diff --git a/clients/ruby/github.com/mloughran/em-hiredis.json b/clients/other-clients/ruby/github.com/mloughran/em-hiredis.json similarity index 100% rename from clients/ruby/github.com/mloughran/em-hiredis.json rename to clients/other-clients/ruby/github.com/mloughran/em-hiredis.json diff --git a/clients/ruby/github.com/redis-rb/redis-client.json b/clients/other-clients/ruby/github.com/redis-rb/redis-client.json similarity index 100% rename from clients/ruby/github.com/redis-rb/redis-client.json rename to clients/other-clients/ruby/github.com/redis-rb/redis-client.json diff --git a/clients/ruby/github.com/redis-rb/redis-cluster-client.json b/clients/other-clients/ruby/github.com/redis-rb/redis-cluster-client.json similarity index 100% rename from clients/ruby/github.com/redis-rb/redis-cluster-client.json rename to clients/other-clients/ruby/github.com/redis-rb/redis-cluster-client.json diff --git a/clients/ruby/github.com/redis/redis-rb.json b/clients/other-clients/ruby/github.com/redis/redis-rb.json similarity index 100% rename from clients/ruby/github.com/redis/redis-rb.json rename to clients/other-clients/ruby/github.com/redis/redis-rb.json diff --git a/clients/rust/github.com/AsoSunag/redis-client.json b/clients/other-clients/rust/github.com/AsoSunag/redis-client.json similarity index 100% rename from clients/rust/github.com/AsoSunag/redis-client.json rename to clients/other-clients/rust/github.com/AsoSunag/redis-client.json diff --git a/clients/rust/github.com/dahomey-technologies/rustis.json b/clients/other-clients/rust/github.com/dahomey-technologies/rustis.json similarity index 100% rename from clients/rust/github.com/dahomey-technologies/rustis.json rename to clients/other-clients/rust/github.com/dahomey-technologies/rustis.json diff --git a/clients/rust/github.com/ltoddy/redis-rs.json b/clients/other-clients/rust/github.com/ltoddy/redis-rs.json similarity index 100% rename from clients/rust/github.com/ltoddy/redis-rs.json rename to clients/other-clients/rust/github.com/ltoddy/redis-rs.json diff --git a/clients/rust/github.com/mitsuhiko/redis-rs.json b/clients/other-clients/rust/github.com/mitsuhiko/redis-rs.json similarity index 100% rename from clients/rust/github.com/mitsuhiko/redis-rs.json rename to clients/other-clients/rust/github.com/mitsuhiko/redis-rs.json diff --git a/clients/rust/github.com/mneumann/rust-redis.json b/clients/other-clients/rust/github.com/mneumann/rust-redis.json similarity index 100% rename from clients/rust/github.com/mneumann/rust-redis.json rename to clients/other-clients/rust/github.com/mneumann/rust-redis.json diff --git a/clients/scala/github.com/acrosa/scala-redis.json b/clients/other-clients/scala/github.com/acrosa/scala-redis.json similarity index 100% rename from clients/scala/github.com/acrosa/scala-redis.json rename to clients/other-clients/scala/github.com/acrosa/scala-redis.json diff --git a/clients/scala/github.com/andreyk0/redis-client-scala-netty.json b/clients/other-clients/scala/github.com/andreyk0/redis-client-scala-netty.json similarity index 100% rename from clients/scala/github.com/andreyk0/redis-client-scala-netty.json rename to clients/other-clients/scala/github.com/andreyk0/redis-client-scala-netty.json diff --git a/clients/scala/github.com/chiradip/RedisClient.json b/clients/other-clients/scala/github.com/chiradip/RedisClient.json similarity index 100% rename from clients/scala/github.com/chiradip/RedisClient.json rename to clients/other-clients/scala/github.com/chiradip/RedisClient.json diff --git a/clients/scala/github.com/chrisdinn/brando.json b/clients/other-clients/scala/github.com/chrisdinn/brando.json similarity index 100% rename from clients/scala/github.com/chrisdinn/brando.json rename to clients/other-clients/scala/github.com/chrisdinn/brando.json diff --git a/clients/scala/github.com/debasishg/scala-redis.json b/clients/other-clients/scala/github.com/debasishg/scala-redis.json similarity index 100% rename from clients/scala/github.com/debasishg/scala-redis.json rename to clients/other-clients/scala/github.com/debasishg/scala-redis.json diff --git a/clients/scala/github.com/etaty/rediscala.json b/clients/other-clients/scala/github.com/etaty/rediscala.json similarity index 100% rename from clients/scala/github.com/etaty/rediscala.json rename to clients/other-clients/scala/github.com/etaty/rediscala.json diff --git a/clients/scala/github.com/jodersky/redicl.json b/clients/other-clients/scala/github.com/jodersky/redicl.json similarity index 100% rename from clients/scala/github.com/jodersky/redicl.json rename to clients/other-clients/scala/github.com/jodersky/redicl.json diff --git a/clients/scala/github.com/laserdisc-io/laserdisc.json b/clients/other-clients/scala/github.com/laserdisc-io/laserdisc.json similarity index 100% rename from clients/scala/github.com/laserdisc-io/laserdisc.json rename to clients/other-clients/scala/github.com/laserdisc-io/laserdisc.json diff --git a/clients/scala/github.com/monix/monix-connect.json b/clients/other-clients/scala/github.com/monix/monix-connect.json similarity index 100% rename from clients/scala/github.com/monix/monix-connect.json rename to clients/other-clients/scala/github.com/monix/monix-connect.json diff --git a/clients/scala/github.com/naoh87/lettucef.json b/clients/other-clients/scala/github.com/naoh87/lettucef.json similarity index 100% rename from clients/scala/github.com/naoh87/lettucef.json rename to clients/other-clients/scala/github.com/naoh87/lettucef.json diff --git a/clients/scala/github.com/pk11/sedis.json b/clients/other-clients/scala/github.com/pk11/sedis.json similarity index 100% rename from clients/scala/github.com/pk11/sedis.json rename to clients/other-clients/scala/github.com/pk11/sedis.json diff --git a/clients/scala/github.com/profunktor/redis4cats.json b/clients/other-clients/scala/github.com/profunktor/redis4cats.json similarity index 100% rename from clients/scala/github.com/profunktor/redis4cats.json rename to clients/other-clients/scala/github.com/profunktor/redis4cats.json diff --git a/clients/scala/github.com/redislabs/spark-redis.json b/clients/other-clients/scala/github.com/redislabs/spark-redis.json similarity index 100% rename from clients/scala/github.com/redislabs/spark-redis.json rename to clients/other-clients/scala/github.com/redislabs/spark-redis.json diff --git a/clients/scala/github.com/scredis/scredis.json b/clients/other-clients/scala/github.com/scredis/scredis.json similarity index 100% rename from clients/scala/github.com/scredis/scredis.json rename to clients/other-clients/scala/github.com/scredis/scredis.json diff --git a/clients/scala/github.com/twitter/finagle.json b/clients/other-clients/scala/github.com/twitter/finagle.json similarity index 100% rename from clients/scala/github.com/twitter/finagle.json rename to clients/other-clients/scala/github.com/twitter/finagle.json diff --git a/clients/scala/github.com/yarosman/redis-client-scala-netty.json b/clients/other-clients/scala/github.com/yarosman/redis-client-scala-netty.json similarity index 100% rename from clients/scala/github.com/yarosman/redis-client-scala-netty.json rename to clients/other-clients/scala/github.com/yarosman/redis-client-scala-netty.json diff --git a/clients/scheme/github.com/aconchillo/guile-redis.json b/clients/other-clients/scheme/github.com/aconchillo/guile-redis.json similarity index 100% rename from clients/scheme/github.com/aconchillo/guile-redis.json rename to clients/other-clients/scheme/github.com/aconchillo/guile-redis.json diff --git a/clients/scheme/github.com/carld/redis-client.egg.json b/clients/other-clients/scheme/github.com/carld/redis-client.egg.json similarity index 100% rename from clients/scheme/github.com/carld/redis-client.egg.json rename to clients/other-clients/scheme/github.com/carld/redis-client.egg.json diff --git a/clients/smalltalk/github.com/mumez/RediStick.json b/clients/other-clients/smalltalk/github.com/mumez/RediStick.json similarity index 100% rename from clients/smalltalk/github.com/mumez/RediStick.json rename to clients/other-clients/smalltalk/github.com/mumez/RediStick.json diff --git a/clients/smalltalk/github.com/svenvc/SimpleRedisClient.json b/clients/other-clients/smalltalk/github.com/svenvc/SimpleRedisClient.json similarity index 100% rename from clients/smalltalk/github.com/svenvc/SimpleRedisClient.json rename to clients/other-clients/smalltalk/github.com/svenvc/SimpleRedisClient.json diff --git a/clients/smalltalk/github.com/tblanchard/Pharo-Redis.json b/clients/other-clients/smalltalk/github.com/tblanchard/Pharo-Redis.json similarity index 100% rename from clients/smalltalk/github.com/tblanchard/Pharo-Redis.json rename to clients/other-clients/smalltalk/github.com/tblanchard/Pharo-Redis.json diff --git a/clients/swift/github.com/Farhaddc/Swidis.json b/clients/other-clients/swift/github.com/Farhaddc/Swidis.json similarity index 100% rename from clients/swift/github.com/Farhaddc/Swidis.json rename to clients/other-clients/swift/github.com/Farhaddc/Swidis.json diff --git a/clients/swift/github.com/Mordil/RediStack.json b/clients/other-clients/swift/github.com/Mordil/RediStack.json similarity index 100% rename from clients/swift/github.com/Mordil/RediStack.json rename to clients/other-clients/swift/github.com/Mordil/RediStack.json diff --git a/clients/swift/github.com/Zewo/Redis.json b/clients/other-clients/swift/github.com/Zewo/Redis.json similarity index 100% rename from clients/swift/github.com/Zewo/Redis.json rename to clients/other-clients/swift/github.com/Zewo/Redis.json diff --git a/clients/swift/github.com/czechboy0/Redbird.json b/clients/other-clients/swift/github.com/czechboy0/Redbird.json similarity index 100% rename from clients/swift/github.com/czechboy0/Redbird.json rename to clients/other-clients/swift/github.com/czechboy0/Redbird.json diff --git a/clients/swift/github.com/michaelvanstraten/Swifty-Redis.json b/clients/other-clients/swift/github.com/michaelvanstraten/Swifty-Redis.json similarity index 100% rename from clients/swift/github.com/michaelvanstraten/Swifty-Redis.json rename to clients/other-clients/swift/github.com/michaelvanstraten/Swifty-Redis.json diff --git a/clients/swift/github.com/perrystreetsoftware/PSSRedisClient.json b/clients/other-clients/swift/github.com/perrystreetsoftware/PSSRedisClient.json similarity index 100% rename from clients/swift/github.com/perrystreetsoftware/PSSRedisClient.json rename to clients/other-clients/swift/github.com/perrystreetsoftware/PSSRedisClient.json diff --git a/clients/swift/github.com/ronp001/SwiftRedis.json b/clients/other-clients/swift/github.com/ronp001/SwiftRedis.json similarity index 100% rename from clients/swift/github.com/ronp001/SwiftRedis.json rename to clients/other-clients/swift/github.com/ronp001/SwiftRedis.json diff --git a/clients/swift/github.com/seznam/swift-uniredis.json b/clients/other-clients/swift/github.com/seznam/swift-uniredis.json similarity index 100% rename from clients/swift/github.com/seznam/swift-uniredis.json rename to clients/other-clients/swift/github.com/seznam/swift-uniredis.json diff --git a/clients/tcl/github.com/gahr/retcl.json b/clients/other-clients/tcl/github.com/gahr/retcl.json similarity index 100% rename from clients/tcl/github.com/gahr/retcl.json rename to clients/other-clients/tcl/github.com/gahr/retcl.json diff --git a/clients/tcl/github.com/redis/redis.json b/clients/other-clients/tcl/github.com/redis/redis.json similarity index 100% rename from clients/tcl/github.com/redis/redis.json rename to clients/other-clients/tcl/github.com/redis/redis.json diff --git a/clients/vb/github.com/hishamco/vRedis.json b/clients/other-clients/vb/github.com/hishamco/vRedis.json similarity index 100% rename from clients/vb/github.com/hishamco/vRedis.json rename to clients/other-clients/vb/github.com/hishamco/vRedis.json diff --git a/clients/vcl/github.com/carlosabalde/libvmod-redis.json b/clients/other-clients/vcl/github.com/carlosabalde/libvmod-redis.json similarity index 100% rename from clients/vcl/github.com/carlosabalde/libvmod-redis.json rename to clients/other-clients/vcl/github.com/carlosabalde/libvmod-redis.json diff --git a/clients/xojo/github.com/ktekinay/XOJO-Redis.json b/clients/other-clients/xojo/github.com/ktekinay/XOJO-Redis.json similarity index 100% rename from clients/xojo/github.com/ktekinay/XOJO-Redis.json rename to clients/other-clients/xojo/github.com/ktekinay/XOJO-Redis.json diff --git a/clients/zig/github.com/kristoff-it/zig-okredis.json b/clients/other-clients/zig/github.com/kristoff-it/zig-okredis.json similarity index 100% rename from clients/zig/github.com/kristoff-it/zig-okredis.json rename to clients/other-clients/zig/github.com/kristoff-it/zig-okredis.json From 6d754d2d3bb8796c3993843977b334131ac23279 Mon Sep 17 00:00:00 2001 From: lior sventitzky Date: Sun, 5 Jan 2025 08:37:13 +0000 Subject: [PATCH 16/19] changed 'valkey version compatibility' to 'valkey version compliance' Signed-off-by: lior sventitzky --- clients/client-page-clients/go/valkey-go.json | 2 +- clients/client-page-clients/java/valkey-GLIDE.json | 2 +- clients/client-page-clients/java/valkey-java.json | 2 +- clients/client-page-clients/nodejs/iovalkey.json | 2 +- clients/client-page-clients/nodejs/valkey-GLIDE.json | 2 +- clients/client-page-clients/php/phpredis.json | 2 +- clients/client-page-clients/php/predis.json | 2 +- clients/client-page-clients/python/valkey-GLIDE.json | 2 +- clients/client-page-clients/python/valkey-py.json | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/clients/client-page-clients/go/valkey-go.json b/clients/client-page-clients/go/valkey-go.json index fe3b7e90..f8f2bfc9 100644 --- a/clients/client-page-clients/go/valkey-go.json +++ b/clients/client-page-clients/go/valkey-go.json @@ -7,7 +7,7 @@ "package_size": "", "read_from_replica": true, "smart_backoff_to_prevent_connection_storm": true, - "valkey_version_compatibility": "7.2", + "valkey_version_compliance": "7.2", "pubsub_state_restoration": true, "cluster_scan": false, "latency_based_read_from_replica": false, diff --git a/clients/client-page-clients/java/valkey-GLIDE.json b/clients/client-page-clients/java/valkey-GLIDE.json index 5a5de2b4..738ea43e 100644 --- a/clients/client-page-clients/java/valkey-GLIDE.json +++ b/clients/client-page-clients/java/valkey-GLIDE.json @@ -17,7 +17,7 @@ "package_size": "", "read_from_replica": true, "smart_backoff_to_prevent_connection_storm": true, - "valkey_version_compatibility": "8.0", + "valkey_version_compliance": "8.0", "pubsub_state_restoration": true, "cluster_scan": true, "latency_based_read_from_replica": false, diff --git a/clients/client-page-clients/java/valkey-java.json b/clients/client-page-clients/java/valkey-java.json index 7d6017a6..7ca51ea4 100644 --- a/clients/client-page-clients/java/valkey-java.json +++ b/clients/client-page-clients/java/valkey-java.json @@ -17,7 +17,7 @@ "package_size": "", "read_from_replica": false, "smart_backoff_to_prevent_connection_storm": true, - "valkey_version_compatibility": "7.2", + "valkey_version_compliance": "7.2", "pubsub_state_restoration": false, "cluster_scan": false, "latency_based_read_from_replica": false, diff --git a/clients/client-page-clients/nodejs/iovalkey.json b/clients/client-page-clients/nodejs/iovalkey.json index c4532dfc..a2df4e74 100644 --- a/clients/client-page-clients/nodejs/iovalkey.json +++ b/clients/client-page-clients/nodejs/iovalkey.json @@ -7,7 +7,7 @@ "package_size": "", "read_from_replica": true, "smart_backoff_to_prevent_connection_storm": true, - "valkey_version_compatibility": "7.2", + "valkey_version_compliance": "7.2", "pubsub_state_restoration": false, "cluster_scan": false, "latency_based_read_from_replica": false, diff --git a/clients/client-page-clients/nodejs/valkey-GLIDE.json b/clients/client-page-clients/nodejs/valkey-GLIDE.json index 9000bf68..88e22152 100644 --- a/clients/client-page-clients/nodejs/valkey-GLIDE.json +++ b/clients/client-page-clients/nodejs/valkey-GLIDE.json @@ -7,7 +7,7 @@ "package_size": "", "read_from_replica": true, "smart_backoff_to_prevent_connection_storm": true, - "valkey_version_compatibility": "8.0", + "valkey_version_compliance": "8.0", "pubsub_state_restoration": true, "cluster_scan": true, "latency_based_read_from_replica": false, diff --git a/clients/client-page-clients/php/phpredis.json b/clients/client-page-clients/php/phpredis.json index e994d7a7..bfdd2360 100644 --- a/clients/client-page-clients/php/phpredis.json +++ b/clients/client-page-clients/php/phpredis.json @@ -12,7 +12,7 @@ "package_size": "", "read_from_replica": true, "smart_backoff_to_prevent_connection_storm": true, - "valkey_version_compatibility": "7.2", + "valkey_version_compliance": "7.2", "pubsub_state_restoration": false, "cluster_scan": false, "latency_based_read_from_replica": false, diff --git a/clients/client-page-clients/php/predis.json b/clients/client-page-clients/php/predis.json index 08a518c0..fefdd60d 100644 --- a/clients/client-page-clients/php/predis.json +++ b/clients/client-page-clients/php/predis.json @@ -10,7 +10,7 @@ "package_size": "", "read_from_replica": true, "smart_backoff_to_prevent_connection_storm": true, - "valkey_version_compatibility": "7.2", + "valkey_version_compliance": "7.2", "pubsub_state_restoration": false, "cluster_scan": false, "latency_based_read_from_replica": false, diff --git a/clients/client-page-clients/python/valkey-GLIDE.json b/clients/client-page-clients/python/valkey-GLIDE.json index a9ad690a..42f5985b 100644 --- a/clients/client-page-clients/python/valkey-GLIDE.json +++ b/clients/client-page-clients/python/valkey-GLIDE.json @@ -7,7 +7,7 @@ "package_size": "", "read_from_replica": true, "smart_backoff_to_prevent_connection_storm": true, - "valkey_version_compatibility": "8.0", + "valkey_version_compliance": "8.0", "pubsub_state_restoration": true, "cluster_scan": true, "latency_based_read_from_replica": false, diff --git a/clients/client-page-clients/python/valkey-py.json b/clients/client-page-clients/python/valkey-py.json index 7df29f0f..4963113a 100644 --- a/clients/client-page-clients/python/valkey-py.json +++ b/clients/client-page-clients/python/valkey-py.json @@ -7,7 +7,7 @@ "package_size": "", "read_from_replica": true, "smart_backoff_to_prevent_connection_storm": true, - "valkey_version_compatibility": "7.2", + "valkey_version_compliance": "7.2", "pubsub_state_restoration": false, "cluster_scan": false, "latency_based_read_from_replica": false, From e49874fc3c31047afc361107bc0a2d6b7a336fa2 Mon Sep 17 00:00:00 2001 From: lior sventitzky Date: Sun, 5 Jan 2025 11:26:27 +0000 Subject: [PATCH 17/19] removed markdown content (moved to website repo) Signed-off-by: lior sventitzky --- topics/client-list.md | 35 ----------------------------------- 1 file changed, 35 deletions(-) delete mode 100644 topics/client-list.md diff --git a/topics/client-list.md b/topics/client-list.md deleted file mode 100644 index aa4c6c1e..00000000 --- a/topics/client-list.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: "Client list" -description: Overview of Valkey clients and features ---- - -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, a table of advanced features supported by the respective clients is provided, highlighting the unique advantages of one client over another. - -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 ------ - -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. - -2. **Smart Backoff to Prevent Connection Storm** - A strategy used to prevent connection storms by progressively updating the wait time between retries when attempting to reconnect to a Valkey server. This helps to reduce the load on the server during topology updates, periods of high demand or network instability. - -3. **Valkey Version Compatibility** - Indicates which versions of Valkey the client is compatible with. This is crucial for ensuring that the client can leverage the latest features and improvements in the Valkey server. - -4. **PubSub State Restoration** - The ability to restore the state of Pub/Sub (publish/subscribe) channels after a client reconnects. This feature ensures that clients can continue receiving messages after disconnections or topology updates such as adding or removing shards, for both legacy Pub/Sub and sharded Pub/Sub. The client will automatically resubscribe the connections to the new node. The advantage is that the application code is simplified, and doesn’t have to take care of resubscribing to new nodes during reconnects. - -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. - -9. **`CLIENT CAPA redirect` Support** - The `CLIENT CAPA redirect` feature was introduced in Valkey 8 to facilitate seamless upgrades without causing errors in standalone mode. When enabled, this feature allows the replica to redirect data access commands (both read and write operations) to the primary instance. This ensures uninterrupted service during the upgrade process. For more detailed information about this feature, please refer to the following link: https://github.com/valkey-io/valkey/pull/325 - -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. From 266003e5b10afa53edf0d0980f26720ec2718ef5 Mon Sep 17 00:00:00 2001 From: lior sventitzky Date: Sun, 5 Jan 2025 11:26:57 +0000 Subject: [PATCH 18/19] added specific properties fields Signed-off-by: lior sventitzky --- clients/client-page-clients/python/valkey-GLIDE.json | 3 ++- clients/client-page-clients/python/valkey-py.json | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/clients/client-page-clients/python/valkey-GLIDE.json b/clients/client-page-clients/python/valkey-GLIDE.json index 42f5985b..c151ba23 100644 --- a/clients/client-page-clients/python/valkey-GLIDE.json +++ b/clients/client-page-clients/python/valkey-GLIDE.json @@ -14,5 +14,6 @@ "AZ_based_read_from_replica": true, "client_side_caching": false, "client_capa_redirect": false, - "persistent_connection_pool": false + "persistent_connection_pool": false, + "specific_properties": ["Available in async api"] } \ No newline at end of file diff --git a/clients/client-page-clients/python/valkey-py.json b/clients/client-page-clients/python/valkey-py.json index 4963113a..07bfc941 100644 --- a/clients/client-page-clients/python/valkey-py.json +++ b/clients/client-page-clients/python/valkey-py.json @@ -14,5 +14,6 @@ "AZ_based_read_from_replica": false, "client_side_caching": false, "client_capa_redirect": false, - "persistent_connection_pool": true + "persistent_connection_pool": true, + "specific_properties": ["Available in sync and async api"] } From 9889086b4572f4c16b6f96d1590c5d866e8a6943 Mon Sep 17 00:00:00 2001 From: lior sventitzky Date: Thu, 9 Jan 2025 13:11:17 +0000 Subject: [PATCH 19/19] removed valkey version compliance field, added some package sizes Signed-off-by: lior sventitzky --- clients/client-page-clients/go/valkey-go.json | 5 ++--- clients/client-page-clients/java/valkey-GLIDE.json | 8 +++----- clients/client-page-clients/java/valkey-java.json | 7 +++---- .../{nodejs => node.js}/iovalkey.json | 5 ++--- .../{nodejs => node.js}/valkey-GLIDE.json | 5 ++--- clients/client-page-clients/php/phpredis.json | 5 ++--- clients/client-page-clients/php/predis.json | 9 ++++----- clients/client-page-clients/python/valkey-GLIDE.json | 7 +++---- clients/client-page-clients/python/valkey-py.json | 7 +++---- 9 files changed, 24 insertions(+), 34 deletions(-) rename clients/client-page-clients/{nodejs => node.js}/iovalkey.json (84%) rename clients/client-page-clients/{nodejs => node.js}/valkey-GLIDE.json (88%) diff --git a/clients/client-page-clients/go/valkey-go.json b/clients/client-page-clients/go/valkey-go.json index f8f2bfc9..94ac7d87 100644 --- a/clients/client-page-clients/go/valkey-go.json +++ b/clients/client-page-clients/go/valkey-go.json @@ -3,11 +3,10 @@ "description": "A fast Golang Valkey client that does auto pipelining and supports server-assisted client-side caching.", "github":"https://github.com/valkey-io/valkey-go", "installation": "go get github.com/valkey-io/valkey-go", - "language":"Go", - "package_size": "", + "language":"go", + "package_size": "14.5M", "read_from_replica": true, "smart_backoff_to_prevent_connection_storm": true, - "valkey_version_compliance": "7.2", "pubsub_state_restoration": true, "cluster_scan": false, "latency_based_read_from_replica": false, diff --git a/clients/client-page-clients/java/valkey-GLIDE.json b/clients/client-page-clients/java/valkey-GLIDE.json index 738ea43e..d9fa4578 100644 --- a/clients/client-page-clients/java/valkey-GLIDE.json +++ b/clients/client-page-clients/java/valkey-GLIDE.json @@ -5,19 +5,17 @@ "installation": [ { "type": "Maven", - "command": "\n io.valkey\n valkey-glide\n 1.2.0\n" + "command": "\n io.valkey\n valkey-glide\n LATEST\n" }, { "type": "Gradle", - "command":"implementation 'io.valkey:valkey-glide:1.2.0" - + "command":"implementation 'io.valkey:valkey-glide:+" } ], - "language":"Java", + "language":"java", "package_size": "", "read_from_replica": true, "smart_backoff_to_prevent_connection_storm": true, - "valkey_version_compliance": "8.0", "pubsub_state_restoration": true, "cluster_scan": true, "latency_based_read_from_replica": false, diff --git a/clients/client-page-clients/java/valkey-java.json b/clients/client-page-clients/java/valkey-java.json index 7ca51ea4..25fe457c 100644 --- a/clients/client-page-clients/java/valkey-java.json +++ b/clients/client-page-clients/java/valkey-java.json @@ -5,19 +5,18 @@ "installation": [ { "type": "Maven", - "command": "\n io.valkey\n valkey-java\n 5.3.0\n" + "command": "\n io.valkey\n valkey-java\n LATEST\n" }, { "type": "Gradle", - "command":"implementation 'io.valkey:valkey-java:5.3.0'" + "command":"implementation 'io.valkey:valkey-java:+'" } ], - "language":"Java", + "language":"java", "package_size": "", "read_from_replica": false, "smart_backoff_to_prevent_connection_storm": true, - "valkey_version_compliance": "7.2", "pubsub_state_restoration": false, "cluster_scan": false, "latency_based_read_from_replica": false, diff --git a/clients/client-page-clients/nodejs/iovalkey.json b/clients/client-page-clients/node.js/iovalkey.json similarity index 84% rename from clients/client-page-clients/nodejs/iovalkey.json rename to clients/client-page-clients/node.js/iovalkey.json index a2df4e74..619133fb 100644 --- a/clients/client-page-clients/nodejs/iovalkey.json +++ b/clients/client-page-clients/node.js/iovalkey.json @@ -3,11 +3,10 @@ "description": "A robust, performance-focused and full-featured Redis client for Node.js.", "github":"https://github.com/valkey-io/iovalkey", "installation": "npm install iovalkey", - "language":"JavaScript/Node.js", - "package_size": "", + "language":"node.js", + "package_size": "1.4M", "read_from_replica": true, "smart_backoff_to_prevent_connection_storm": true, - "valkey_version_compliance": "7.2", "pubsub_state_restoration": false, "cluster_scan": false, "latency_based_read_from_replica": false, diff --git a/clients/client-page-clients/nodejs/valkey-GLIDE.json b/clients/client-page-clients/node.js/valkey-GLIDE.json similarity index 88% rename from clients/client-page-clients/nodejs/valkey-GLIDE.json rename to clients/client-page-clients/node.js/valkey-GLIDE.json index 88e22152..1ff5c476 100644 --- a/clients/client-page-clients/nodejs/valkey-GLIDE.json +++ b/clients/client-page-clients/node.js/valkey-GLIDE.json @@ -3,11 +3,10 @@ "description": "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, node.js and Python.", "github":"https://github.com/valkey-io/valkey-glide/tree/main/node", "installation": "npm install valkey-glide", - "language":"JavaScript/Node.js", - "package_size": "", + "language":"node.js", + "package_size": "35M", "read_from_replica": true, "smart_backoff_to_prevent_connection_storm": true, - "valkey_version_compliance": "8.0", "pubsub_state_restoration": true, "cluster_scan": true, "latency_based_read_from_replica": false, diff --git a/clients/client-page-clients/php/phpredis.json b/clients/client-page-clients/php/phpredis.json index bfdd2360..5d0b17fc 100644 --- a/clients/client-page-clients/php/phpredis.json +++ b/clients/client-page-clients/php/phpredis.json @@ -7,12 +7,11 @@ "yatsukhnenko" ], "github":"https://github.com/phpredis/phpredis", - "installation": "composer require predis/predis", - "language":"PHP", + "installation": "pecl install redis", + "language":"php", "package_size": "", "read_from_replica": true, "smart_backoff_to_prevent_connection_storm": true, - "valkey_version_compliance": "7.2", "pubsub_state_restoration": false, "cluster_scan": false, "latency_based_read_from_replica": false, diff --git a/clients/client-page-clients/php/predis.json b/clients/client-page-clients/php/predis.json index fefdd60d..5c5bce65 100644 --- a/clients/client-page-clients/php/predis.json +++ b/clients/client-page-clients/php/predis.json @@ -1,16 +1,15 @@ { - "name": "Predis", + "name": "predis", "description": "A flexible and feature-complete Redis client for PHP.", "twitter": [ "JoL1hAHN" ], "github":"https://github.com/predis/predis", - "installation": "pecl install redis", - "language":"PHP", - "package_size": "", + "installation": "composer require predis/predis", + "language":"php", + "package_size": "2.8M", "read_from_replica": true, "smart_backoff_to_prevent_connection_storm": true, - "valkey_version_compliance": "7.2", "pubsub_state_restoration": false, "cluster_scan": false, "latency_based_read_from_replica": false, diff --git a/clients/client-page-clients/python/valkey-GLIDE.json b/clients/client-page-clients/python/valkey-GLIDE.json index c151ba23..f11f837e 100644 --- a/clients/client-page-clients/python/valkey-GLIDE.json +++ b/clients/client-page-clients/python/valkey-GLIDE.json @@ -3,11 +3,10 @@ "description": "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, node.js and Python.", "github":"https://github.com/valkey-io/valkey-glide/tree/main/python", "installation": "pip install valkey-glide", - "language":"Python", - "package_size": "", + "language":"python", + "package_size": "25M", "read_from_replica": true, "smart_backoff_to_prevent_connection_storm": true, - "valkey_version_compliance": "8.0", "pubsub_state_restoration": true, "cluster_scan": true, "latency_based_read_from_replica": false, @@ -15,5 +14,5 @@ "client_side_caching": false, "client_capa_redirect": false, "persistent_connection_pool": false, - "specific_properties": ["Available in async api"] + "specific_properties": ["Available in async API"] } \ No newline at end of file diff --git a/clients/client-page-clients/python/valkey-py.json b/clients/client-page-clients/python/valkey-py.json index 07bfc941..fc62a20b 100644 --- a/clients/client-page-clients/python/valkey-py.json +++ b/clients/client-page-clients/python/valkey-py.json @@ -3,11 +3,10 @@ "description": "The Python interface to the Valkey key-value store.", "github":"https://github.com/valkey-io/valkey-py", "installation": "pip install valkey", - "language":"Python", - "package_size": "", + "language":"python", + "package_size": "18M", "read_from_replica": true, "smart_backoff_to_prevent_connection_storm": true, - "valkey_version_compliance": "7.2", "pubsub_state_restoration": false, "cluster_scan": false, "latency_based_read_from_replica": false, @@ -15,5 +14,5 @@ "client_side_caching": false, "client_capa_redirect": false, "persistent_connection_pool": true, - "specific_properties": ["Available in sync and async api"] + "specific_properties": ["Available in sync and async API"] }