The maximum duration (in milliseconds) that the socket can remain idle (i.e., with no data sent or received) before being automatically closed. Default reconnectionStrategy will ignore the new SocketTimeoutError, but users are allowed to have custom strategies wich handle those errors in different ways
* CSC POC ontop of Parser
* add csc file that weren't merged after patch
* address review comments
* nits to try and fix github
* last change from review
* Update client-side cache and improve documentation
* Add client side caching RESP3 validation
* Add documentation for RESP and unstableResp3 options
* Add comprehensive cache statistics
The `CacheStats` class provides detailed metrics like hit/miss counts,
load success/failure counts, total load time, and eviction counts.
It also offers derived metrics such as hit/miss rates, load failure rate,
and average load penalty. The design is inspired by Caffeine.
`BasicClientSideCache` now uses a `StatsCounter` to accumulate these
statistics, exposed via a new `stats()` method. The previous
`cacheHits()` and `cacheMisses()` methods have been removed.
A `recordStats` option (default: true) in `ClientSideCacheConfig`
allows disabling statistics collection.
---------
Co-authored-by: Shaya Potter <shaya@redislabs.com>
* Export CommandParser from client index file
* Tidy up long export line in client index file
Wrap and sort entries.
* Adapt and fix wrong examples in programmability doc
- Added a Connection Pooling section in `createClient` documentation to clarify that a single connection is typically sufficient and to provide guidance on when to use a connection pool.
- Updated `isolationPoolOptions` description with a more precise explanation and replaced the broken link with a reference to `createClientPool`.
- Changes made based on issue #2845.
* Update README.MD
* docs: update programmability.md examples
+ add Programmability section to README and
* fix imports according to the new v5 exports
* more v5 docs updates
---------
Co-authored-by: Nikolay Karadzhov <nkaradzhov89@gmail.com>
RESP3 Support
- Some commands responses in RESP3 aren't stable yet and therefore return an "untyped" ReplyUnion.
Sentinel
TypeMapping
Correctly types Multi commands
Note: some API changes to be further documented in v4-to-v5.md
* refactor pubsub, add support for sharded pub sub
* run tests in redis 7 only, fix PUBSUB SHARDCHANNELS test
* add some comments and fix some bugs
* PubSubType, not PubSubTypes 🤦♂️
* remove test.txt
* fix some bugs, add tests
* add some tests
* fix#2345 - allow PING in PubSub mode (remove client side validation)
* remove .only
* revert changes in cluster/index.ts
* fix tests minimum version
* handle server sunsubscribe
* add 'sharded-channel-moved' event to docs, improve the events section in the main README (fix#2302)
* exit "resubscribe" if pubsub not active
* Update commands-queue.ts
* Release client@1.5.0-rc.0
* WIP
* use `node:util` instead of `node:util/types` (to support node 14)
* run PubSub resharding test with Redis 7+
* fix inconsistency in live resharding test
* add some tests
* fix iterateAllNodes when starting from a replica
* fix iterateAllNodes random
* fix slotNodesIterator
* fix slotNodesIterator
* clear pubSubNode when node in use
* wait for all nodes cluster state to be ok before testing
* `cluster.minimizeConections` tests
* `client.reconnectStrategry = false | 0` tests
* sharded pubsub + cluster 🎉
* add minimum version to sharded pubsub tests
* add cluster sharded pubsub live reshard test, use stable dockers for tests, make sure to close pubsub clients when a node disconnects from the cluster
* fix "ssubscribe & sunsubscribe" test
* lock search docker to 2.4.9
* change numberOfMasters default to 2
* use edge for bloom
* add tests
* add back getMasters and getSlotMaster as deprecated functions
* add some tests
* fix reconnect strategy + docs
* sharded pubsub docs
* Update pub-sub.md
* some jsdoc, docs, cluster topology test
* clean pub-sub docs
Co-authored-by: Simon Prickett <simon@redislabs.com>
* reconnect startegy docs and bug fix
Co-authored-by: Simon Prickett <simon@redislabs.com>
* refine jsdoc and some docs
Co-authored-by: Simon Prickett <simon@redislabs.com>
* I'm stupid
* fix cluster topology test
* fix cluster topology test
* Update README.md
* Update clustering.md
* Update pub-sub.md
Co-authored-by: Simon Prickett <simon@redislabs.com>
* fix#1598fix#2276 - add `pingInterval` to client config
* setPingTimer on ready (instead of on connect)
* use isReady (instead of isOpen) and fix test
* Update client-configuration.md
* init v4
* add .gitignore to benchmark
* spawn redis-servers for tests,
add some tests,
fix client auth on connect
* add tests coverage report
* add tests workflow, replace nyc text reporter with text-summary
* run tests with node 16.x & redis 6.x only (for now)
* add socket events on client,
stop reconnectiong when manually calling disconnect,
remove abort signal listener when a command is written on the socket
* add isOpen boolean getter on client, add maxLength option to command queue, add test for client.multi
* move to use CommonJS
* add MULTI and EXEC commands to when executing multi command, make client.multi return type innerit the module commands, clean some tests, exclute spec files from coverage report
* missing file from commit 61edd4f1b5
* exclude spec files from coverage report
* add support for options in a command function (.get, .set, ...), add support for the SELECT command, implement a couple of commands, fix client socket reconnection strategy, add support for using replicas (RO) in cluster, and more..
* fix client.blPop test
* use which to find redis-server path
* change command options to work with Symbol rather then WeakSet
* implement more commands
* Add support for lua scripts in client & muilti, fix client socket initiator, implement simple cluster nodes discovery strategy
* replace `callbackify` with `legacyMode`
* add the SCAN command and client.scanIterator
* rename scanIterator
* init benchmark workflow
* fix benchmark workflow
* fix benchmark workflow
* fix benchmark workflow
* push coverage report to Coveralls
* fix Coveralls
* generator lcov (for Coveralls)
* fix .nycrc.json
* PubSub
* add support for all set commands (including sScanIterator)
* support pipeline
* fix KEEPTTL in SET
* remove console.log
* add HyperLogLog commands
* update README.md (thanks to @guyroyse)
* add support for most of the "keys commands"
* fix EXPIREAT.spec.ts
* add support for date in both EXPIREAT & EXPIRE
* add tests
* better cluster nodes discorvery strategy after MOVED error, add PubSub test
* fix PubSub UNSUBSCRIBE/PUNSUBSCRIBE without channel and/or listener
* fix PubSub
* add release-it to dev dependencies
* Release 4.0.0-next.0
* fix .npmignore
* Release 4.0.0-next.1
* fix links in README.md
* fix .npmignore
* Release 4.0.0-next.2
* add support for all sorted set commands
* add support for most stream commands
* add missing file from commit 53de279afe
* lots of todo commends
* make PubSub test more stable
* clean ZPOPMAX
* add support for lua scripts and modules in cluster, spawn cluster for tests, add some cluster tests, fix pubsub listener arguments
* GET.spec.ts
* add support for List commands, fix some Sorted Set commands, add some cluster commands, spawn cluster for testing, add support for command options in cluster, and more
* add missing file from commit faab94fab2
* clean ZRANK and ZREVRANK
* add XREAD and XREADGROUP commands
* remove unused files
* implement a couple of more commands, make cluster random iterator be per node (instead of per slot)
* Release 4.0.0-next.3
* app spec files to npmignore
* fix some code analyzers (LGTM, deepsource, codeclimate) issues
* fix CLUSTER_NODES, add some tests
* add HSCAN, clean some commands, add tests for generic transformers
* add missing files from 0feb35a1fb
* update README.md (thanks to @guyroyse)
* handle ASK errors, add some commands and tests
* Release 4.0.0-next.4
* replace "modern" with "v4"
* remove unused imports
* add all ACL subcommands, all MODULE subcommands, and some other commands
* remove 2 unused imports
* fix BITFIELD command
* fix XTRIM spec file
* clean code
* fix package.json types field
* better modules support, fix some bugs in legacy mode, add some tests
* remove unused function
* add test for hScanIterator
* change node mimimum version to 12 (latest LTS)
* update tsconfig.json to support node 12, run tests on Redis 5 & 6 and on all node live versions
* remove future node releases :P
* remove "lib" from ts compiler options
* Update tsconfig.json
* fix build
* run some tests only on supported redis versions, use coveralls parallel mode
* fix tests
* Do not use "timers/promises", fix "isRedisVersionGreaterThan"
* skip AbortController tests when not available
* use 'fs'.promises instead of 'fs/promises'
* add some missing commands
* run GETDEL tests only if the redis version is greater than 6.2
* implement some GEO commands, improve scan generic transformer, expose RPUSHX
* fix GEOSEARCH & GEOSEARCHSTORE
* use socket.setNoDelay and queueMicrotask to improve latency
* commands-queue.ts: String length / byte length counting issue (#1630)
* Update commands-queue.ts
Hopefully fixing #1628
* Reverted 2fa5ea6, and implemented test for byte length check
* Changed back to Buffer.byteLength, due to issue author input. Updated test to look for 4 bytes.
* Fixed. There were two places that length was calculated.
* Removed redundant string assignment
* add 2 bytes test as well
Co-authored-by: Leibale Eidelman <leibale1998@gmail.com>
* fix scripts in multi
* do not hide bugs in redis
* fix for e7bf09644b
* remove unused import
* implement WATCH command, fix ZRANGESTORE & GEOSEARCHSTORE tests
* update README.md
Co-authored-by: @GuyRoyse
* use typedoc to auto generate documentation
* run "npm install" before "npm run documentation"
* clean documentation workflow
* fix WATCH spec file
* increase "CLUSTER_NODE_TIMEOUT" to 5000ms to avoid "CLUSTERDOWN" errors in tests
* pull cluster state every 100 ms
* await meetPromises before pulling the cluster state
* enhance the way commanders (client/multi/cluster) get extended with modules and scripts
* add test for socket retry strategy
* implement more commands
* set GETEX minimum version to 6.2
* remove unused imports
* add support for multi in cluster
* upgrade dependencies
* Release 4.0.0-next.5
* remove unused imports
* improve benchmarking
* use the same Multi with duplicated clients
* exclude some files from the documentation, add some exports, clean code
* fix#1636 - handle null in multi.exec
* remove unused import
* add supoprt for tuples in HSET
* add FIRST_KEY_INDEX to HSET
* add a bunch of missing commands, fix MSET and HELLO, add some tests
* add FIRST_KEY_INDEX to MSET and MSETNX
* upgrade actions
* fix coverallsapp/github-action version
* Update documentation.yml
* Update documentation.yml
* clean code
* remove unused imports
* use "npm ci" instead of "npm install"
* fix `self` binding on client modules, use connection pool for `duplicateConnection`
* add client.executeIsolated, rename "duplicateConnection" to "isolated", update README.md (thanks to @GuyRoyse and @SimonPrickett)
* update README (thanks to @GuyRoyse), add some tests
* try to fix "cluster is down" errors in tests
* try to fix "cluster is down" errors in tests
* upgrade dependencies
* update package-lock
* Release 4.0.0-next.6
* fix#1636 - fix WatchError
* fix for f1bf0beebf - remove .only from multi tests
* Release 4.0.0-next.7
* update README and other markdown files
Co-authored-by: @GuyRoyse & @SimonPrickett
* Doc updates. (#1640)
* update docs, upgrade dependencies
* fix README
* Release 4.0.0-rc.0
* Update README.md
* update docs, add `connectTimeout` options, fix tls
Co-authored-by: Guy Royse <guy@guyroyse.com>
* npm update, "fix" some tests, clean code
* fix AssertionError import
* fix#1642 - fix XREAD, XREADGROUP and XTRIM
* fix#1644 - add the QUIT command
* add socket.noDelay and socket.keepAlive configurations
* Update README.md (#1645)
* Update README.md
Fixed issue with how connection string was specified.
Now you can have user@host without having to specify a password, which just makes more sense
* Update client-configuration.md as well
Co-authored-by: Leibale Eidelman <leibale1998@gmail.com>
* update socket.reconnectStrategy description
* fix borken link in v3-to-v4.md
* increase test coverage, fix bug in cluster redirection strategy, implement CLIENT_ID, remove unused EXEC command
Co-authored-by: Nova <novaw@warrenservices.co.uk>
Co-authored-by: Simon Prickett <simon@crudworks.org>
Co-authored-by: Guy Royse <guy@guyroyse.com>