Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

@valkey/valkey-glide-linux-x64-musl

valkey-io1.1kApache-2.02.0.1

Native bindings for valkey-glide on linux-x64-musl

valkey, redis, client, driver, database, napi, typescript, rust, cross-platform, cluster, standalone, high-availability, performance, open-source, fault-tolerant, distributed, scalable, resilient, valkey-glide

readme

Welcome to Valkey GLIDE!

Valkey General Language Independent Driver for the Enterprise (GLIDE) is the official open-source Valkey client library, proudly part of the Valkey organization. Our mission is to make your experience with Valkey and Redis OSS seamless and enjoyable. Whether you're a seasoned developer or just starting out, Valkey GLIDE is here to support you every step of the way.

Why Choose Valkey GLIDE?

  • Community and Open Source: Join our vibrant community and contribute to the project. We are always here to respond, and the client is for the community.
  • Reliability: Built with best practices learned from over a decade of operating Redis OSS-compatible services.
  • Performance: Optimized for high performance and low latency.
  • High Availability: Designed to ensure your applications are always up and running.
  • Cross-Language Support: Implemented using a core driver framework written in Rust, with language-specific extensions to ensure consistency and reduce complexity.
  • Stability and Fault Tolerance: We brought our years of experience to create a bulletproof client.
  • Backed and Supported by AWS and GCP: Ensuring robust support and continuous improvement of the project.

Documentation

See GLIDE's documentation site.
Visit our wiki for examples and further details on TLS, Read strategy, Timeouts and various other configurations.

Supported Engine Versions

Refer to the Supported Engine Versions table for details.

Getting Started - Node Wrapper

System Requirements

The release of Valkey GLIDE was tested on the following platforms:

Linux GNU

Linux with glibc 2.17 or higher.

MacOS (Darwin)

MacOS Apple Silicon/aarch_64 and x86_64/amd64.

  • Full tests are running on MacOS 15.0 arm64/aarch64
  • Minimal tests are running on: MacOS 13.5 x8664/amd64(We do not recommend using MacOS Intel for production, It is supported for development purposes)_

Alpine

All alpine versions that are using musl libc 1.2.3 (All Alpine non deprecated alpine versions) or higher should be supported. Tests are running on:

  • node:alpine (x86_64/amd64 and arm64/aarch64)

NodeJS supported version

Node.js 16 or higher. For npm users on linux it is recommended to use npm >=11 since it support optional download base on libc, yarn users should not be concerned

  • Note: The library is dependent on the protobufjs library, which add a size to the package. The package is using the protobufjs/minimal version, hence, if size matter, bundlers should be able to strip the unused code. It should reduce the size of the dependency from 19kb gzipped to 6.5kb gzipped.

Building & Testing

Development instructions for local building & testing the package are in the DEVELOPER.md file.

Quick Start

Installation

npm i @valkey/valkey-glide

Basic Examples

Standalone Mode:

import { GlideClient, GlideClusterClient, Logger } from "@valkey/valkey-glide";
// When Valkey is in standalone mode, add address of the primary node, and any replicas you'd like to be able to read from.
const addresses = [
    {
        host: "localhost",
        port: 6379,
    },
];
// Check `GlideClientConfiguration/GlideClusterClientConfiguration` for additional options.
const client = await GlideClient.createClient({
    addresses: addresses,
    // if the server uses TLS, you'll need to enable it. Otherwise, the connection attempt will time out silently.
    // useTLS: true,
    // It is recommended to set a timeout for your specific use case
    requestTimeout: 500, // 500ms timeout
    clientName: "test_standalone_client",
});
// The empty array signifies that there are no additional arguments.
const pong = await client.customCommand(["PING"]);
console.log(pong);
const set_response = await client.set("foo", "bar");
console.log(`Set response is = ${set_response}`);
const get_response = await client.get("foo");
console.log(`Get response is = ${get_response}`);

Cluster Mode:

import { GlideClient, GlideClusterClient, Logger } from "@valkey/valkey-glide";
// When Valkey is in cluster mode, add address of any nodes, and the client will find all nodes in the cluster.
const addresses = [
    {
        host: "localhost",
        port: 6379,
    },
];
// Check `GlideClientConfiguration/GlideClusterClientConfiguration` for additional options.
const client = await GlideClusterClient.createClient({
    addresses: addresses,
    // if the cluster nodes use TLS, you'll need to enable it. Otherwise the connection attempt will time out silently.
    // useTLS: true,
    // It is recommended to set a timeout for your specific use case
    requestTimeout: 500, // 500ms timeout
    clientName: "test_cluster_client",
});
// The empty array signifies that there are no additional arguments.
const pong = await client.customCommand(["PING"], { route: "randomNode" });
console.log(pong);
const set_response = await client.set("foo", "bar");
console.log(`Set response is = ${set_response}`);
const get_response = await client.get("foo");
console.log(`Get response is = ${get_response}`);
client.close();

Supported platforms

Currently, the package is tested on:

Operation systems C lib Architecture
Linux glibc, musl libc x86_64, arm64
macOS Darwin x86_64, arm64

Community and Feedback

We encourage you to join our community to support, share feedback, and ask questions. You can approach us for anything on our Valkey Slack: Join Valkey Slack.

changelog

Changes

  • Java: fix addReturnField method in FT module ([#4084]https://github.com/valkey-io/valkey-glide/pull/4084)
  • Python: Create openTelemetry span to measure command latency (#3985)
  • Go: Add client name and version identifiers (#3903)
  • Python: Add support for Trio (#3465)
  • Core: Add an OK response type to FFI (#3630)
  • Core: Move UDS Socket Filename to tmp (#3615)
  • Node: Added build improvements for rust release (#3606)
  • Core: Ensure UDS socket filename is truly unique. (#3596)
  • Python: Add Batch support (#3555)
  • Node: Fix type declarations (#3489)
  • Core: Add opentelemetry protocols support (#3191)
  • Node: Make the request sampling percentage configurable, and create spans conditionally based on it (#3830)
  • Core/Node: Make OpenTelemetry config to be global per process (#3771)
  • Core/Node: Create openTelemetry span to measure command latency (#3391)
  • Core: Add opentelemetry metrics support (#3466)
  • Core: Add opentelemetry moved, retry attemps counters and set_status (#3944)
  • Node: Fix ZADD, enabling +inf and -inf as score (#3370)
  • Go: Add JSON.SET and JSON.GET (#3115)
  • Csharp: updating xUnit, adding xUnit analyser rules and guidelines (#3035)
  • Go: Add ZRangeStore (3105)
  • Go: Add ZUNION (#3119)
  • Go: Add ZUNIONSTORE (#3136)
  • Go: Add XINFO CONSUMERS (#3120)
  • Go: Add XINFO GROUPS (#3106)
  • Go: Add ZInterCard (#3078)
  • Go: Add ZLEXCOUNT (#3140)
  • Go: Updating examples for ZInterCard (#3232)
  • Go: Fix channel passing from Go to Rust by using runtime.Pinner or cgo.Handle (#3208)
  • Go: Add BZPOPMAX and ZMPOP #3257
  • Go: Fix data race on the coreClient with sync.Mutex and a channel map (#3236)
  • Go: Adding support for Az Affinity (#3235)
  • Go: Adding support for advanced client configs and connectionTimeout (#3290)
  • Go: Add Cluster Scan support (#3295)
  • Go: Fix unsafe precondition violation for the slice::from_raw_parts (#3350)
  • Go: Add GeoAdd and the Geospatial interface (#3366)
  • Go: Add LOLWUT (#3355)
  • Go: Add BITPOS (#3407)
  • Go: Add FLUSHALL (#3117)
  • Go: Add FLUSHDB (#3117)
  • Go: Add PFMERGE (#3082)
  • Go: Add password update api (#3346)
  • Add/update documentation for GlideClient and GlideClusterClient and for factory constructor for all clients (#3418)
  • Go: Add BITOP (#3384)
  • Go: Add GeoHash (#3439)
  • Go/Core: Move FFI to a dedicated folder for reusability (#3372)
  • Go: Add GeoPos (#3409)
  • Go: Add GeoDist (#3446)
  • Go: Add ClientId (#3077)
  • Go: Add LastSave (#3086)
  • Go: Add Config Reset Stat (#3121)
  • Go: Add GeoSearch and GeoSearchStore (#3385)
  • Go: Add ConfigSet & ConfigGet for cluster client (#3274, #3594)
  • Go: Add ClientSetName & ClientGetName (#3302)
  • Go: Add Move (#3369)
  • Go: Add Scan (#3378)
  • Go: Add LCS (#3475)
  • Core/FFI/Go: Add Support for Async and Sync Client Types in FFI (#3451)
  • Core/FFI/Go: Add support for async and sync client types in FFI (#3451)
  • Go: Add PubSub support (#3417)
  • Go: Add Publish (#3417)
  • Go: Add PubSubChannels (#3665)
  • Go: Add PubSubNumPat (#3666)
  • Go: Add PubSubNumSub (#3667)
  • Go: Add Sharded Publish (#3692)
  • Go: Add PubSub ShardChannels (#3695)
  • Go: Add PubSub ShardNumSub (#3708)
  • Go: Add Config Rewrite (#3156)
  • Go: Add Random Key (#3358)
  • Go: Add Function Load, Function Flush, FCall and FCall_RO (#3474)
  • Python: Add equallity check to ExpirySet (#3554)
  • Java: Add Batches support (#3561)
  • Go: Add Function Stats (#3526)
  • Go: Add Function Delete (#3603)
  • Go: Add Function Kill (#3604)
  • Go: Script eval/load(#3605)
  • Benchmarks: Fix rust benchmark latencies calculation
  • Go: Add Script Exists (#3649)
  • Python: Moved the tests folder to be under the root folder (#3661)
  • Go: Add script flush command(#3662)
  • Go: Add Script Kill (#3670)
  • Go: Add Script Show (#3668)
  • Go: Add Function List (#3673)
  • Go: Move private types to internal packages (#3841)
  • Go: Move private interfaces to internal packages (#3856)
  • Java, Python, Node: Fix logger docs, add option to log an exception (#3844)
  • Core: Refactor socket listener to use a runtime that lives for the application lifetime #3842
  • Go: Add Function Dump & Restore (#3721)
  • Python: Fix restore command (#3853)
  • Update Go Ort (#3469)
  • Go: Remove redundant implementations of echo (#3859)
  • Java: Add toArgs() to restore batch command (#3883)
  • Java: Add error restore command (#3905)
  • Core: Add reference counting to Script container to support multiple instances (#3897)
  • Java: Implement support for Insecure TLS authentication mode(#3386)
  • Java: Otel implementation (#3962)
  • Go: SRandMemberCount command added (#4037)
  • Go: SPopCount command added (#4026)
  • Go: Batch/Transaction/Pipeline (#3938 and #4005)
  • Go: WATCH and UNWATCH (#4054)
  • Java: OTEL fix for script (#4065)
  • Go: Add Opentelemetry support of creating spans (#3932)
  • Go: Fix API to use errors idiomatically (#4090)
  • Go: XInfoStream example fix (#4185)

Breaking Changes

  • Go: Drop support for Go 1.20 (#3513)
  • Java: Deprecate Transaction and ClusterTransaction (#3561)
  • Go: Fix response handler for ZRangeWithScores to return an ordered result (#3694)
  • Go: Fix response handler for other sorted set with scores commands to return an ordered result (#3712)
  • Java: Change BZMPOP and ZMPOP to return Map<String, Object> and Map<GlideString, Object> instead of Object[] (#3733)
  • Go: Add support for context (#3802)
  • Go: Change parameters of EchoWithOptions to be more user-friendly (#3806)
  • Java: Shadow netty dependencies. (#3004)
  • Go: Modify requestTimeout and connectionTimeout to be of type time.Duration (#3857)
  • Go: Update options.Expiry to use time.Duration (#4089)
  • Go: XRead and XReadGroup response update (#4085)
  • Go: XClaim and XClaimWithOptions update response type (#4091)
  • Modify PFADD to return a boolean rather than an integer (#4094)
  • Go: Modify blocking commands to use type time.Duration for timeouts (#4086)
  • Go: Modify most commands to use type time.Duration (check PR for list of commands modified) (#4105)
  • Go: XInfoStream update response (#4136)
  • Go: Update return type for XAdd without optional arguments (#4141)
  • Go: Change options arguments to not be pointers (#4106)
  • Go: Change ZAddIncr Return Type to be float64 (#4190)
  • Go: Update return type for LMPop and related commands (#4166)
  • Go: ZRankWithScore and ZRevRankWithScore update response type (#4196)
  • Go: Update return type for LCS commands (#4187)

Fixes

  • Add support for Intel MAC (x86_64/amd64) (#3482)
  • Go, Java: Fix response handling for customCommand API for cluster client (#3593)
  • Java: Bump netty version (#3804)
  • Go: Fix GeoHash's return type to allow for both strings and null (#4098)
  • Go: ClientGetName returns a nullable string (#4088)

Operational Enhancements

1.3.0 (2025-02-14)

Changes

  • Java: Add support to AzAffinityReplicasAndPrimary read strategy (#3083)
  • Python: Add support to AzAffinityReplicasAndPrimary read strategy (#3071)
  • Node: Add support to AzAffinityReplicasAndPrimary read strategy (#3063)
  • Core: Add support to AzAffinityReplicasAndPrimary read strategy (#2986)
  • Java, Node, Python: Add transaction commands for JSON module (#2862)
  • Java: bump netty version (#2795)
  • Java: Bump protobuf (protoc) version (#2796, #2800)
  • Java: Add binary version of ZRANK WITHSCORE (#2896)
  • Java, Node, Python: Update documentation for CONFIG SET and CONFIG GET (#2919)
  • Java: Shadow protobuf dependency (#2931)
  • Java: Add RESP2 support (#2383)
  • Node, Python: Add IFEQ option (#2909, #2962)
  • Java: Add IFEQ option (#2978)
  • Core: Add AzAffinityReplicasAndPrimary Read Strategy(#2986)

Breaking Changes

Fixes

  • Node: Fix zrangeWithScores (disallow RangeByLex as it is not supported) (#2926)
  • Core: improve fix in #2381 (#2929)
  • Java: Fix lpopCount null handling (#3025)
  • Core: Fix opentelemetry related dependency issue (#3123)
  • Node: Fix NPM CD tag (#3155)
  • Java: replacing map usage in response handling with LinkedHashMap (#3324)

Operational Enhancements

Features

  • Go: Preview release of Go client. See documentation for details on specific supported commands in this release.

1.2.1 (2024-12-29)

Changes

  • Node, Python, Java: Add allow uncovered slots scanning flag option in cluster scan (#2814, #2815, #2860)
  • Java: Bump protobuf (protoc) version (#2561, #2802)
  • Java: bump netty version (#2777)
  • Node: Remove native package references for MacOs x64 architecture (#2799)
  • Node, Python, Java: Add connection timeout to client configuration (#2823)

Breaking Changes

Fixes

  • Core: Fix RESP2 multi-node response from cluster (#2381)
  • Core: Ensure cluster client creation fail when engine is < 7.0 and sharded subscriptions are configured (#2819)

Operational Enhancements

1.2.0 (2024-11-27)

Changes

  • Node: Client API for retrieving internal statistics (#2727)
  • Python: Client API for retrieving internal statistics (#2707)
  • Node, Python, Java: Adding support for replacing connection configured password (#2651, #2659, #2677)
  • Node, Python, Java: AZ Affinity - Python Wrapper Support (#2686, #2676, #2678)
  • Node: Add FT._ALIASLIST command (#2652)
  • Python: Add FT._ALIASLIST command (#2638)
  • Node: Add FT.ALIASADD, FT.ALIADDEL, FT.ALIASUPDATE (#2596)
  • Python code cleanup (#2573)
  • Python: Add FT.PROFILE command (#2543)
  • Python: Add FT.AGGREGATE command (#2530)
  • Python: Add JSON.OBJLEN command (#2495)
  • Python: Add FT.EXPLAIN and FT.EXPLAINCLI commands (#2508)
  • Python: Add FT.INFO command (#2429)
  • Python: Add FT.SEARCH command (#2470)
  • Python: Add commands FT.ALIASADD, FT.ALIASDEL, FT.ALIASUPDATE (#2471)
  • Python: Add FT.DROPINDEX command (#2437)
  • Python: Add FT.CREATE command (#2413)
  • Python: Add JSON.MGET command (#2507)
  • Python: Add JSON.ARRLEN command (#2403)
  • Python: Add JSON.CLEAR command (#2418)
  • Python: Add JSON.TYPE command (#2409)
  • Python: Add JSON.NUMINCRBY command (#2448)
  • Python: Add JSON.NUMMULTBY command (#2458)
  • Python: Add JSON.ARRINDEX command (#2528)
  • Python: Add FT._LIST command (#2571)
  • Python: Add JSON.DEBUG_MEMORY and JSON.DEBUG_FIELDS commands (#2481)
  • Java: Added FT.CREATE (#2414)
  • Java: Added FT.INFO (#2405)
  • Java: Added FT.DROPINDEX (#2440)
  • Java: Added FT.SEARCH (#2439)
  • Java: Added FT.AGGREGATE (#2466)
  • Java: Added FT.PROFILE (#2473)
  • Java: Added JSON.SET and JSON.GET (#2462)
  • Java: Added JSON.MGET (#2514)
  • Node: Added FT.CREATE (#2501)
  • Node: Added FT.INFO (#2540)
  • Node: Added FT.AGGREGATE (#2554)
  • Node: Added FT.PROFILE (#2633)
  • Java: Added JSON.DEBUG (#2520)
  • Java: Added JSON.ARRINSERT and JSON.ARRLEN (#2476)
  • Java: Added JSON.ARRINDEX (#2546)
  • Java: Added JSON.ARRPOP (#2486)
  • Java: Added JSON.OBJLEN and JSON.OBJKEYS (#2492)
  • Java: Added JSON.DEL and JSON.FORGET (#2490)
  • Java: Added FT.ALIASADD, FT.ALIASDEL, FT.ALIASUPDATE (#2442)
  • Java: Added FT._ALIASLIST (#2569)
  • Java: Added FT.EXPLAIN, FT.EXPLAINCLI (#2515)
  • Core: Update routing for commands from server modules (#2461)
  • Node: Added JSON.SET and JSON.GET (#2427)
  • Node: Added JSON.MGET (#2567)
  • Java: Added JSON.NUMINCRBY and JSON.NUMMULTBY (#2511)
  • Java: Added JSON.ARRAPPEND (#2489)
  • Java: Added JSON.ARRTRIM (#2518)
  • Node: Added JSON.TOGGLE (#2491)
  • Node: Added JSON.ARRINSERT, JSON.ARRPOP and JSON.ARRLEN (#2542)
  • Node: Added JSON.DEL and JSON.FORGET (#2505)
  • Java: Added JSON.TOGGLE (#2504)
  • Java: Added JSON.STRAPPEND and JSON.STRLEN (#2522)
  • Java: Added JSON.CLEAR (#2519)
  • Node: Added JSON.TYPE (#2510)
  • Node: Added JSON.ARRAPPEND (#2562)
  • Java: Added JSON.RESP (#2513)
  • Java: Added JSON.TYPE (#2525)
  • Java: Added FT._LIST (#2568)
  • Node: Added FT.DROPINDEX (#2516)
  • Node: Added FT._LIST (#2570)
  • Node: Added JSON.RESP (#2517)
  • Node: Added FT.EXPLAIN and FT.EXPLAINCLI (#2560)
  • Node: Added JSON.CLEAR (#2566)
  • Node: Added JSON.ARRTRIM (#2550)
  • Python: Add JSON.STRAPPEND, JSON.STRLEN commands (#2372)
  • Node: Added JSON.ARRINDEX (#2559)
  • Node: Added JSON.OBJLEN and JSON.OBJKEYS (#2563)
  • Python: Add JSON.STRAPPEND, JSON.STRLEN commands (#2372)
  • Python: Add JSON.OBJKEYS command (#2395)
  • Python: Add JSON.ARRINSERT command (#2464)
  • Python: Add JSON.ARRTRIM command (#2457)
  • Python: Add JSON.ARRAPPEND command (#2382)
  • Python: Add JSON.RESP command (#2451)
  • Python: Add JSON.ARRPOP command (#2407)
  • Node: Add JSON.STRLEN and JSON.STRAPPEND command (#2537)
  • Node: Add FT.SEARCH (#2551)
  • Python: Fix example (#2556)
  • Core: Add support for sending multi-slot JSON.MSET and JSON.MGET commands (#2587)
  • Node: Add JSON.DEBUG command (#2572)
  • Node: Add JSON.NUMINCRBY and JSON.NUMMULTBY command (#2555)
  • Core: Add support to Availability Zone Affinity read strategy (#2539)
  • Core: Fix list of readonly commands (#2634, #2649)
  • Core: Improve retry logic and update unmaintained dependencies for Rust lint CI (#2673)
  • Core: Release the read lock while creating connections in refresh_connections (#2630)
  • Core: SlotMap refactor - Added NodesMap, Update the slot map upon MOVED errors (#2682)

Breaking Changes

Fixes

  • Core: UDS Socket Handling Rework (#2482)

Operational Enhancements

1.1.0 (2024-09-24)

Changes

  • Node: Fix binary variant for xinfogroups and lrem (#2324)
  • Node: Fixed missing exports (#2301)
  • Node: Use options struct for all optional arguments (#2287)
  • Node: Added invokeScript API with routing for cluster client (#2284)
  • Java: Expanded tests for converting non UTF-8 bytes to Strings (#2286)
  • Python: Replace instances of Redis with Valkey (#2266)
  • Java: Replace instances of Redis with Valkey (#2268)
  • Node: Replace instances of Redis with Valkey (#2260)
  • Node: Added binary variant for commands which have Record as input or output (#2207)
  • Node: Renamed ReturnType to GlideReturnType (#2241)
  • Node: Fix BITPOS for Valkey8 (#2227)
  • Node, Python: Rename stop to end in sorted set queries (#2214)
  • Node: Added binary variant to sorted set commands - part 1 (#2190)
  • Python: Fix BITPOS for Valkey8 (#2256)
  • Node: Added binary variant to HSCAN command (#2240)
  • Node: replace decoder by DecoderOption and route by RouteOption in API(#2234)
  • Node: Added binary variant to sorted set commands (#2190, #2210)
  • Node: Added binary variant for MSET, MSETNX commands (#2229)
  • Node: Added binary variant to HASH commands (#2194)
  • Node: Added binary variant to server management commands (#2179)
  • Node: Added/updated binary variant to connection management commands and WATCH/UNWATCH (#2160)
  • Java: Fix docs for stream commands (#2086)
  • Node: Added binary variant to bitmap commands (#2178)
  • Node: Added binary variant to generic commands (#2158)
  • Node: Added binary variant to geo commands (#2149)
  • Node: Added binary variant to HYPERLOGLOG commands (#2176)
  • Node: Added FUNCTION DUMP and FUNCTION RESTORE commands (#2129, #2173)
  • Node: Added binary variant to FUNCTION commands (#2172)
  • Node: Added ZUNIONSTORE command (#2145)
  • Node: Added XREADGROUP command (#2124)
  • Node: Added XINFO GROUPS command (#2122)
  • Java: Added PUBSUB CHANNELS, NUMPAT and NUMSUB commands (#2105)
  • Java: Added PUBSUB SHARDCHANNELS command (#2265)
  • Java: Added PUBSUB SHARDNUMSUB command (#2279)
  • Java: Added binary support for custom command (#2109)
  • Node: Added SSCAN command (#2132)
  • Node: Added HKEYS command (#2136)
  • Node: Added FUNCTION KILL command (#2114)
  • Node: Update all commands to use async (#2110)
  • Node: Added XAUTOCLAIM command (#2108)
  • Node: Added XPENDING commands (#2085)
  • Node: Added HSCAN command (#2098)
  • Node: Added XINFO CONSUMERS command (#2093)
  • Node: Added HRANDFIELD command (#2096)
  • Node: Added FUNCTION STATS commands (#2082)
  • Node: Added XCLAIM command (#2092)
  • Node: Added EXPIRETIME and PEXPIRETIME commands (#2063)
  • Node: Added SORT commands (#2028)
  • Node: Added LASTSAVE command (#2059)
  • Node: Added GEOSEARCHSTORE command (#2080)
  • Node: Added LCS command (#2049)
  • Node: Added MSETNX command (#2046)
  • Node: Added BLMOVE command (#2027)
  • Node: Exported client configuration types (#2023)
  • Java, Python: Update docs for GEOSEARCH command (#2017)
  • Python: Update docs for BITFIELD and BITFIELD_RO commands (#2048)
  • Node: Added FUNCTION LIST command (#2019)
  • Node: Added GEOSEARCH command (#2007)
  • Node: Added LMOVE command (#2002)
  • Node: Added GEOPOS command (#1991)
  • Node: Added BITCOUNT command (#1982)
  • Node: Added BITPOS command (#1998)
  • Node: Added BITFIELD and BITFIELD_RO commands (#2026)
  • Node: Added TOUCH command (#2055)
  • Node: Added FLUSHDB command (#1986)
  • Node: Added GETDEL command (#1968)
  • Node: Added GETRANGE command (#2079)
  • Node: Added BITOP command (#2012)
  • Node: Added GETBIT command (#1989)
  • Node: Added SETBIT command (#1978)
  • Node: Added RANDOMKEY command (#2057)
  • Node: Added LPUSHX and RPUSHX command(#1959)
  • Node: Added LSET command (#1952)
  • Node: Added SDIFFSTORE command (#1931)
  • Node: Added ZDIFF command (#1972)
  • Node: Added ZDIFFSTORE command (#1985)
  • Node: Added SINTERCARD command (#1956)
  • Node: Added SINTERSTORE command (#1929)
  • Node: Added SUNION command (#1919)
  • Node: Added SMISMEMBER command (#1955)
  • Node: Added SDIFF command (#1924)
  • Node: Added ZMSCORE command (#1987)
  • Node: Added LOLWUT command (#1934)
  • Node: Added LPOS command (#1927)
  • Node: Added FUNCTION LOAD command (#1969)
  • Node: Added FUNCTION DELETE command (#1990)
  • Node: Added FUNCTION FLUSH command (#1984)
  • Node: Added FCALL and FCALL_RO commands (#2011)
  • Node: Added COPY command (#2024)
  • Node: Added MOVE command (#2104)
  • Node: Added ZMPOP command (#1994)
  • Node: Added ZINCRBY command (#2009)
  • Node: Added BZMPOP command (#2018)
  • Node: Added XRANGE command (#2069)
  • Node: Added XREVRANGE command (#2148)
  • Node: Added PFMERGE command (#2053)
  • Node: Added WATCH and UNWATCH commands (#2076)
  • Node: Added WAIT command (#2113)
  • Node: Added DUMP and RESTORE commands (#2126)
  • Node: Added transaction supports for DUMP and RESTORE (#2159)
  • Node: Added ZLEXCOUNT command (#2022)
  • Node: Added ZREMRANGEBYLEX command (#2025)
  • Node: Added ZRANGESTORE command (#2068)
  • Node: Added SRANDMEMBER command (#2067)
  • Node: Added XINFO STREAM command (#2083)
  • Node: Added ZSCAN command (#2061)
  • Node: Added SETRANGE command (#2066)
  • Node: Added APPEND command (#2095)
  • Node: Added XDEL command (#2064)
  • Node: Added LMPOP & BLMPOP command (#2050)
  • Node: Added PUBSUB support (#1964)
  • Node: Added PUBSUB * commands (#2090)
  • Python: Added PUBSUB * commands (#2043)
  • Node: Added XGROUP CREATE & XGROUP DESTROY commands (#2084)
  • Node: Added BZPOPMAX & BZPOPMIN command (#2077)
  • Node: Added XGROUP CREATECONSUMER & XGROUP DELCONSUMER commands (#2088)
  • Node: Added GETEX command (#2107)
  • Node: Added ZINTER and ZUNION commands (#2146)
  • Node: Added XACK commands (#2112)
  • Node: Added XGROUP SETID command (#2135)
  • Node: Added binary variant to string commands (#2183)
  • Node: Added binary variant to stream commands (#2200, #2222)
  • Python: Add Script commands (#2208)
  • Node: Added Script commands (#2267)
  • Java, Node, Python: Add BY/GET support for SORT/RO in cluster mode (Valkey-8) (#2252)
  • Java, Node, Python: Add SCRIPT SHOW command (Valkey-8) (#2171)
  • Java, Node, Python: Change BITCOUNT end param to optional (Valkey-8) (#2248)
  • Java, Node, Python: Add NOSCORES option to ZSCAN & NOVALUES option to HSCAN (Valkey-8) (#2174)
  • Node: Add SCAN command (#2257)
  • Java: Add Script commands (#2261)
  • Python: Replace google-api-python-client with protobuf (#2304)

Breaking Changes

  • Java: Update INFO command (#2274)
  • Node: (Refactor) Convert types to interfaces (#2263)
  • Node: (Refactor) Convert classes to types (#2005)
  • Core: Change FUNCTION STATS command to return multi node response for standalone mode (#2117)

Fixes

  • Java: Fix GlideString conversion from byte to String (#2271)
  • Java: Add overloads for XADD to allow duplicate entry keys (#1970)
  • Node: Fix ZADD bug where command could not be called with only the changed optional parameter (#1995)
  • Java: XRange/XRevRange should return null instead of GlideException when given a negative count (#1920)
  • Python: Fix XClaim return type to List[bytes] instead of List[TEncodable] (#2075)
  • Python: Add missing exports (#2341)
  • Node: Add missing exports (#2342)

Operational Enhancements

  • CI/CD: Create Workflow to deploy artifacts for all platforms (#2285)
  • Node: Get valkey/redis version using client's info command (#2276)
  • Java: Fetch server version using client's info command (#2258)
  • CI/CD: Add workflow for automating Maven release (#2128)

1.0.0 (2024-07-09)

Changes

  • Node: Added ZINTERSTORE command (#1513)
  • Python: Added OBJECT ENCODING command (#1471)
  • Python: Added OBJECT FREQ command (#1472)
  • Python: Added OBJECT IDLETIME command (#1474)
  • Python: Added GEOSEARCH command (#1482)
  • Python: Added GEOSEARCHSTORE command (#1581)
  • Node: Added RENAMENX command (#1483)
  • Python: Added OBJECT REFCOUNT command (#1485)
  • Python: Added RENAMENX command (#1492)
  • Python: Added PFCOUNT command (#1493)
  • Python: Added PFMERGE command (#1497)
  • Node: Added SINTER command (#1500)
  • Python: Added XLEN command (#1503)
  • Python: Added LASTSAVE command (#1509)
  • Python: Added GETDEL command (#1514)
  • Python: Added GETRANGE command (#1585)
  • Python: Added ZINTER, ZUNION commands (#1478)
  • Python: Added SINTERCARD command (#1511)
  • Python: Added SORT command (#1439)
  • Node: Added OBJECT ENCODING command (#1518, #1559)
  • Python: Added LMOVE and BLMOVE commands (#1536)
  • Node: Added SUNIONSTORE command (#1549)
  • Python: Added SUNION command (#1583)
  • Node: Added PFCOUNT command (#1545)
  • Node: Added OBJECT FREQ command (#1542, #1559)
  • Node: Added LINSERT command (#1544)
  • Node: Added XLEN command (#1555)
  • Node: Added ZINTERCARD command (#1553)
  • Python: Added ZINCBY command (#1586)
  • Python: Added LMPOP and BLMPOP commands (#1547)
  • Python: Added HSTRLEN command (#1564)
  • Python: Added MSETNX command (#1565)
  • Python: Added MOVE command (#1566)
  • Python: Added EXPIRETIME, PEXPIRETIME commands (#1587)
  • Python: Added LSET command (#1584)
  • Node: Added OBJECT IDLETIME command (#1567)
  • Node: Added OBJECT REFCOUNT command (#1568)
  • Python: Added SETBIT command (#1571)
  • Python: Added SRandMember command (#1578)
  • Python: Added GETBIT command (#1575)
  • Python: Added BITCOUNT command (#1592)
  • Python: Added FLUSHALL command (#1579)
  • Python: Added TOUCH command (#1582)
  • Python: Added BITOP command (#1596)
  • Python: Added BITPOS command (#1604)
  • Python: Added GETEX command (#1612)
  • Python: Added BITFIELD and BITFIELD_RO commands (#1615)
  • Python: Added ZREVRANK command (#1614)
  • Python: Added XDEL command (#1619)
  • Python: Added XRANGE command (#1624)
  • Python: Added COPY command (#1626)
  • Python: Added XREVRANGE command (#1625)
  • Python: Added XREAD command (#1644)
  • Python: Added XGROUP CREATE and XGROUP DESTROY commands (#1646)
  • Python: Added XGROUP CREATECONSUMER and XGROUP DELCONSUMER commands (#1658)
  • Python: Added LOLWUT command (#1657)
  • Python: Added XREADGROUP command (#1679)
  • Python: Added XACK command (#1681)
  • Python: Added FLUSHDB command (#1680)
  • Python: Added XGROUP SETID command (#1683)
  • Python: Added FUNCTION LOAD command (#1699)
  • Python: Added XPENDING command (#1704)
  • Python: Added RANDOMKEY command (#1701)
  • Python: Added FUNCTION FLUSH command (#1700)
  • Python: Added FUNCTION DELETE command (#1714)
  • Python: Added FUNCTION LIST command (#1738)
  • Python: Added SSCAN command (#1709)
  • Python: Added LCS command (#1716)
  • Python: Added WAIT command (#1710)
  • Python: Added XAUTOCLAIM command (#1718)
  • Python: Add ZSCAN and HSCAN commands (#1732)
  • Python: Added FCALL_RO command (#1721)
  • Python: Added WATCH and UNWATCH command (#1736)
  • Python: Added XCLAIM command (#1772)
  • Python: Added XINFO GROUPS and XINFO CONSUMERS commands (#1753)
  • Python: Added LPOS command (#1740)
  • Python: Added SCAN command (#1623)
  • Python: Added DUMP and Restore commands (#1733)
  • Java: Added SCAN command (#1751)
  • Python: Added FUNCTION KILL command (#1797)
  • Python: Type migration for entries_read (#1768)
  • Python: Added FUNCTION DUMP and FUNCTION RESTORE commands (#1769)
  • Python: Added FUNCTION STATS command (#1794)
  • Python: Added XINFO STREAM command (#1816)
  • Python: Added transaction supports for DUMP, RESTORE, FUNCTION DUMP and FUNCTION RESTORE (#1814)
  • Node: Added FlushAll command (#1958)
  • Node: Added DBSize command (#1932)
  • Node: Added GeoAdd command (#1980)
  • Node: Added ZRevRank command (#1977)
  • Node: Added GeoDist command (#1988)
  • Node: Added GeoHash command (#1997)
  • Node: Added HStrlen command (#2020)
  • Node: Added ZRandMember command (#2013)

Breaking Changes

  • Node: Update XREAD to return a Map of Map (#1494)
  • Node: Rename RedisClient to GlideClient and RedisClusterClient to GlideClusterClient (#1670)
  • Python: Rename RedisClient to GlideClient, RedisClusterClient to GlideClusterClient and BaseRedisClient to BaseClient(#1669)
  • Python: Rename ClusterClientConfiguration to GlideClusterClientConfiguration (#1806)

Fixes

  • Python: fixing a bug with transaction exec (#1796)

0.4.1 (2024-06-02)

Fixes

  • Node: Fix set command bug with expiry option (#1508)

0.4.0 (2024-05-26)

Changes

  • Python: Added JSON.DEL JSON.FORGET commands (#1146)
  • Python: Added STRLEN command (#1230)
  • Python: Added HKEYS command (#1228)
  • Python: Added RPUSHX and LPUSHX commands (#1239)
  • Python: Added ZREMRANGEBYSCORE command (#1151)
  • Node, Python: Added SPOP, SPOPCOUNT commands. (#1117, #1261)
  • Node: Added ZRANGE command (#1115)
  • Python: Added RENAME command (#1252)
  • Python: Added APPEND command (#1152)
  • Python: Added GEOADD command (#1259)
  • Python: Added GEODIST command (#1260)
  • Python: Added GEOHASH command (#1281)
  • Python: Added ZLEXCOUNT command (#1305)
  • Python: Added ZREMRANGEBYLEX command (#1306)
  • Python: Added LINSERT command (#1304)
  • Python: Added GEOPOS command (#1301)
  • Node: Added PFADD command (#1317)
  • Python: Added PFADD command (#1315)
  • Python: Added ZMSCORE command (#1357)
  • Python: Added HRANDFIELD command (#1334)
  • Node: Added BLPOP command (#1223)
  • Python: Added XADD, XTRIM commands (#1320)
  • Python: Added BLPOP and BRPOP commands (#1369)
  • Python: Added ZRANGESTORE command (#1377)
  • Python: Added ZDIFFSTORE command (#1378)
  • Python: Added ZDIFF command (#1401)
  • Python: Added BZPOPMIN and BZPOPMAX commands (#1399)
  • Python: Added ZUNIONSTORE, ZINTERSTORE commands (#1388)
  • Python: Added ZRANDMEMBER command (#1413)
  • Python: Added BZMPOP command (#1412)
  • Python: Added ZINTERCARD command (#1418)
  • Python: Added ZMPOP command (#1417)
  • Python: Added SMOVE command (#1421)
  • Python: Added SUNIONSTORE command (#1423)
  • Python: Added SINTER command (#1434)
  • Python: Added SDIFF command (#1437)
  • Python: Added SDIFFSTORE command (#1449)
  • Python: Added SINTERSTORE command (#1459)
  • Python: Added SMISMEMBER command (#1461)
  • Python: Added SETRANGE command (#1453)

Fixes

  • Python: Fix typing error "'type' object is not subscriptable" (#1203)
  • Core: Fixed blocking commands to use the specified timeout from the command argument (#1283)

Breaking Changes

  • Node: Changed smembers and spopCount functions to return Set instead of string[] (#1299)

Features

  • Node: Added support for alpine based platform (Or any x64-musl or arm64-musl based platforms) (#1379)

0.3.3 (2024-03-28)

Fixes

  • Node: Fix issue with dual usage, CommonJS and ECMAScript modules. (#1199)

0.3.0 (2024-03-25)

Changes

  • Python Node: Allow routing Cluster requests by address. (#1021)
  • Python, Node: Added HSETNX command. (#954, #1091)
  • Python, Node: Added SISMEMBER command (#972, #1083)
  • Python, Node: Added TYPE command (#945, #980)
  • Python, Node: Added HLEN command (#944, #981)
  • Python, Node: Added ZCOUNT command (#878) (#909)
  • Python, Node: Added ECHO command (#953, #1010)
  • Python, Node: Added ZPOPMIN command (#975, #1008)
  • Node: Added STRLEN command (#993)
  • Node: Added LINDEX command (#999)
  • Python, Node: Added ZPOPMAX command (#996, #1009)
  • Python: Added ZRANGE command (#906)
  • Python, Node: Added PTTL command (#1036, #1082)
  • Python, Node: Added HVAL command (#1130), (#1022)
  • Python, Node: Added PERSIST command (#1129), (#1023)
  • Node: Added ZREMRANGEBYSCORE command (#926)
  • Node: Added ZREMRANGEBYRANK command (#924)
  • Node: Added Xadd, Xtrim commands. (#1057)
  • Python: Added json module and JSON.SET JSON.GET commands (#1056)
  • Python, Node: Added Time command (#1147), (#1114)
  • Python, Node: Added LINDEX command (#1058, #999)
  • Python, Node: Added ZRANK command (#1065, #1149)
  • Core: Enabled Cluster Mode periodic checks by default (#1089)
  • Node: Added Rename command. (#1124)
  • Python: Added JSON.TOGGLE command (#1184)

Features

  • Python: Allow chaining function calls on transaction. (#987)
  • Node: Adding support for GLIDE's usage in projects based on either CommonJS or ECMAScript modules. (#1132)
  • Python, Node: Added Cluster Mode configuration for periodic checks interval (#1089, #1158)

0.2.0 (2024-02-11)

Changes

  • Python, Node: Added ZCARD command (#871, #885)
  • Python, Node: Added ZADD and ZADDINCR commands (#814, #830)
  • Python, Node: Added ZREM command (#834, #831)
  • Python, Node: Added ZSCORE command (#877, #889)
  • Use jemalloc as default allocator. (#847)
  • Python, Node: Added RPOPCOUNT and LPOPCOUNT to transaction (#874)
  • Standalone client: Improve connection errors. (#854)
  • Python, Node: When recieving LPOP/RPOP with count, convert result to Array. (#811)
  • Python, Node: Added TYPE command (#945, #980)
  • Python, Node: Added HLEN command (#944, #981)
  • Python, Node: Added ZCOUNT command (#878) (#909)
  • Python: Added ECHO command (#953)
  • Python, Node: Added ZPOPMIN command (#975, #1008)
  • Node: Added STRLEN command (#993)
  • Node: Added LINDEX command (#999)
  • Python, Node: Added ZPOPMAX command (#996, #1009)
  • Python: Added DBSIZE command (#1040)
  • Core: Log directory can now be modified by setting the environment variable GLIDE_LOG_DIR (#2704)

Features

  • Python, Node: Added support in Lua Scripts (#775, #860)
  • Node: Allow chaining function calls on transaction. (#902)

Fixes

  • Core: Fixed Connection Refused error not to close the client (#872)
  • Socket listener: fix identifier for closed reader error. (#853)
  • Node: Fix issues with type import & exports (#767)
  • Core: Added handling to "?" and NULL hostnames in CLUSTER SLOTS (#104)
  • Core: Cluster connection now reconnects after full disconnect. (#100)

0.1.0 (2024-01-17)

Preview release of GLIDE for Redis a Polyglot Redis client.

See the README for additional information.