valkey-glide - feat: Add Valkey GLIDE storage adapter - #2146
EmilBuszylo wants to merge 1 commit into
Conversation
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
|
Warning Review the following alerts detected in dependencies. According to your organization's Security Policy, it is recommended to resolve "Warn" alerts. Learn more about Socket for GitHub.
|
Adds @keyv/valkey-glide so Keyv can use the official GLIDE client, including AZ affinity and cluster-aware multi-key commands (jaredwray#1566). Co-authored-by: Cursor <cursoragent@cursor.com>
7015207 to
505b4eb
Compare
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #2146 +/- ##
===========================================
- Coverage 100.00% 99.49% -0.51%
===========================================
Files 55 56 +1
Lines 5281 5535 +254
Branches 857 922 +65
===========================================
+ Hits 5281 5507 +226
- Misses 0 28 +28 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
|
@EmilBuszylo - thanks for doing the work on this. Here is what we need to do before we merge this Blocking
Requested, non-blocking
|
Adds
@keyv/valkey-glideso Keyv can use the official Valkey GLIDE Node client (@valkey/valkey-glide). This is the path discussed in #1566: keep@keyv/valkeyoniovalkey, and land GLIDE as a separate storage adapter.Please check if the PR fulfills these requirements
What kind of change does this PR introduce? (Bug fix, feature, docs update, ...)
Feature: new official storage adapter
@keyv/valkey-glide.Why
GLIDE is the Valkey client with a Rust core, cluster-aware multi-key commands (
MGET,UNLINK, …), and read strategies including AZ affinity (readFrom+clientAz). That is not a drop-in foriovalkey, so a dedicated package matches the maintainer note on #1566.What
storage/valkey-glideimplementing the v6KeyvStorageAdaptercontract (expiresviaSET+PXAT).GlideClient.createClient/GlideClusterClient.createClientare async; the first command orgetClient()opens the connection. Existing GLIDE clients can be passed in.redis://,rediss://,valkey://,valkeys://), a GLIDE config object (cluster,addresses,readFrom,clientAz,useTLS, …), or an existing client.getManyuses GLIDEmget(cluster-aware).clear()/iterator()useSCAN(clusterClusterScanCursorwhen needed).useSetskey layout as@keyv/valkey.useSets: trueis documented as not cluster-safe.keyvREADME, website adapter overview.AZ affinity example: