Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Introduce Valkey client overview #164

Merged
merged 34 commits into from
Feb 11, 2025
Merged
Show file tree
Hide file tree
Changes from 26 commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
db67a06
Introduce Valkey client overview
asafpamzn Aug 15, 2024
6495792
Update clients/ValkeyClients.md
asafpamzn Aug 25, 2024
65e3a3a
Update cluster-slots to explain the deterministic ordering (#159)
roshkhatri Aug 28, 2024
21c71eb
Update threaded IO info (#165)
uriyage Sep 4, 2024
2a74a77
Addressed comments from the first review.
asafpamzn Sep 9, 2024
43f4158
Addressed comments from the first review.
asafpamzn Sep 9, 2024
5b944ac
Update clients/ValkeyClients.md
asafpamzn Sep 15, 2024
bc2edd9
Update code according to comments
asafpamzn Sep 15, 2024
16d3a15
update TOC
asafpamzn Sep 15, 2024
6c79834
Update ValkeyClients.md
asafpamzn Sep 26, 2024
1e4bb60
Merge branch 'valkey-io:main' into main
asafpamzn Sep 26, 2024
c1fb1a6
updated json client files and added page to docs topics
liorsve Nov 17, 2024
5382678
Merge pull request #1 from liorsve/main
asafpamzn Nov 25, 2024
a2d5dd8
changed file name, fixed page and jsons according to comments
liorsve Nov 28, 2024
7d83ed8
removed client list from markdown and moved content to json files
liorsve Dec 1, 2024
f2b382b
added placeholder for package size in jsons
liorsve Dec 16, 2024
9c8a126
changed clients directory structure - divide to 2 subfolders for clie…
liorsve Jan 5, 2025
6d754d2
changed 'valkey version compatibility' to 'valkey version compliance'
liorsve Jan 5, 2025
e49874f
removed markdown content (moved to website repo)
liorsve Jan 5, 2025
266003e
added specific properties fields
liorsve Jan 5, 2025
9889086
removed valkey version compliance field, added some package sizes
liorsve Jan 9, 2025
7b635fb
updated more package sizes
liorsve Jan 12, 2025
e7d19a4
fixed client names
liorsve Jan 12, 2025
1d207c3
updated READMEs
liorsve Jan 20, 2025
c379966
deleted old redis clients and changed dir structure
liorsve Jan 22, 2025
8d0e289
added license info
liorsve Jan 22, 2025
5d9f3b6
updated READMEs, changed 'github' field to 'repo'
liorsve Jan 22, 2025
8723bb9
Update clients/go/valkey-go.json
liorsve Jan 26, 2025
ba1d7d4
updated README example
liorsve Jan 26, 2025
d9a15b4
Update clients/php/phpredis.json
liorsve Feb 3, 2025
eb63aa4
Update clients/php/predis.json
liorsve Feb 3, 2025
e4afacc
removed twitter field
liorsve Feb 3, 2025
3732e00
removed package_size, added version data
liorsve Feb 9, 2025
e68c85a
Merge remote-tracking branch 'valkey-doc/main'
liorsve Feb 10, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,13 +61,13 @@ They are maintained by their original developers.

All clients are listed under language specific sub-folders of [clients](./clients)

The path follows the pattern: ``clients/{language}/github.com/{owner}/{repository}.json``.
The path follows the pattern: ``clients/{language}/{repository}.json``.
The ``{language}`` component of the path is the path-safe representation
of the full language name which is mapped in [languages.json](./languages.json).

Each client's JSON object represents the details displayed on the [clients documentation page](https://valkey.io/clients/).

For example [clients/python/github.com/valkey-io/valkey-go.json](./clients/python/github.com/valkey-io/valkey-go.json):
For example [clients/python/valkey-go.json](./clients/python/valkey-go.json):

```json
{
Expand Down
35 changes: 35 additions & 0 deletions clients/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Clients Documentation

This repo contains the detailed JSON files specifying client libraries. It is used for generating contect for the [clients documentation page](https://valkey.io/clients/)

## JSON Fields
Each JSON file includes general fields as well as boolean feature fields, specifying whether the client supports them or not.

### General Fields

1. **description** - a short despcription of the library, mostly taken from their repos.
2. **github** - the url to the library's repo.
3. **installation** - an installation command from the most used package manager in the respective language.
4. **language** - the programming language in which the library is written.
5. **package_size** - the library's unpacked package size, including dependencies.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think that credentials providers integration should also be part of the features.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would ask we should probably stop adding features here, and just get the current list up to date. This PR has been open for awhile, and it's probably for the best to get it merged.

### Feature Fields
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. **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.

4. **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.

5. **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.

6. **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 [this link.](https://github.com/valkey-io/valkey/pull/700)

7. **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.

8. **CLIENT CAPA redirect** - 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 [this link.](https://github.com/valkey-io/valkey/pull/325)

9. **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.


4 changes: 0 additions & 4 deletions clients/actionscript/github.com/mikeheier/Redis-AS3.json

This file was deleted.

6 changes: 0 additions & 6 deletions clients/activex-com/gitlab.com/erik4/redis-com-client.json

This file was deleted.

This file was deleted.

4 changes: 0 additions & 4 deletions clients/bash/github.com/SomajitDey/redis-client.json

This file was deleted.

7 changes: 0 additions & 7 deletions clients/bash/github.com/caquino/redis-bash.json

This file was deleted.

7 changes: 0 additions & 7 deletions clients/bash/github.com/crypt1d/redi.sh.json

This file was deleted.

This file was deleted.

4 changes: 0 additions & 4 deletions clients/c/code.google.com/p/credis/source/browse.json

This file was deleted.

7 changes: 0 additions & 7 deletions clients/c/github.com/EulerianTechnologies/eredis.json

This file was deleted.

5 changes: 0 additions & 5 deletions clients/c/github.com/Nordix/hiredis-cluster.json

This file was deleted.

4 changes: 0 additions & 4 deletions clients/c/github.com/aclisp/hiredispool.json

This file was deleted.

10 changes: 0 additions & 10 deletions clients/c/github.com/redis/hiredis.json

This file was deleted.

4 changes: 0 additions & 4 deletions clients/c/github.com/toymachine/libredis.json

This file was deleted.

7 changes: 0 additions & 7 deletions clients/c/github.com/vipshop/hiredis-vip.json

This file was deleted.

8 changes: 0 additions & 8 deletions clients/clojure/github.com/ptaoussanis/carmine.json

This file was deleted.

8 changes: 0 additions & 8 deletions clients/common-lisp/github.com/vseloved/cl-redis.json

This file was deleted.

8 changes: 0 additions & 8 deletions clients/cpp/github.com/0xsky/xredis.json

This file was deleted.

7 changes: 0 additions & 7 deletions clients/cpp/github.com/Levhav/SimpleRedisClient.json

This file was deleted.

This file was deleted.

4 changes: 0 additions & 4 deletions clients/cpp/github.com/basiliscos/cpp-bredis.json

This file was deleted.

7 changes: 0 additions & 7 deletions clients/cpp/github.com/cpp-redis/cpp_redis.json

This file was deleted.

7 changes: 0 additions & 7 deletions clients/cpp/github.com/eyjian/r3c.json

This file was deleted.

8 changes: 0 additions & 8 deletions clients/cpp/github.com/hamidr/async-redis.json

This file was deleted.

7 changes: 0 additions & 7 deletions clients/cpp/github.com/hmartiro/redox.json

This file was deleted.

4 changes: 0 additions & 4 deletions clients/cpp/github.com/icerlion/FlyRedis.json

This file was deleted.

7 changes: 0 additions & 7 deletions clients/cpp/github.com/luca3m/redis3m.json

This file was deleted.

3 changes: 0 additions & 3 deletions clients/cpp/github.com/mrpi/redis-cplusplus-client.json

This file was deleted.

7 changes: 0 additions & 7 deletions clients/cpp/github.com/mzimbres/aedis.json

This file was deleted.

7 changes: 0 additions & 7 deletions clients/cpp/github.com/nekipelov/redisclient.json

This file was deleted.

5 changes: 0 additions & 5 deletions clients/cpp/github.com/nokia/wiredis.json

This file was deleted.

8 changes: 0 additions & 8 deletions clients/cpp/github.com/sewenew/redis-plus-plus.json

This file was deleted.

4 changes: 0 additions & 4 deletions clients/cpp/github.com/shawn246/redis_client.json

This file was deleted.

4 changes: 0 additions & 4 deletions clients/cpp/github.com/tdv/redis-cpp.json

This file was deleted.

7 changes: 0 additions & 7 deletions clients/cpp/github.com/uglide/qredisclient.json

This file was deleted.

4 changes: 0 additions & 4 deletions clients/cpp/github.com/wusongwei/soce.json

This file was deleted.

9 changes: 0 additions & 9 deletions clients/crystal/github.com/stefanwille/crystal-redis.json

This file was deleted.

4 changes: 0 additions & 4 deletions clients/csharp/github.com/2881099/FreeRedis.json

This file was deleted.

5 changes: 0 additions & 5 deletions clients/csharp/github.com/IKende/BeetleX.Redis.json

This file was deleted.

5 changes: 0 additions & 5 deletions clients/csharp/github.com/NewLifeX/NewLife.Redis.json

This file was deleted.

This file was deleted.

This file was deleted.

5 changes: 0 additions & 5 deletions clients/csharp/github.com/andrew-bn/RedisBoost.json

This file was deleted.

7 changes: 0 additions & 7 deletions clients/csharp/github.com/ctstone/csredis.json

This file was deleted.

Loading
Loading