Private class fields (e.g., #execute) cause runtime errors when accessed from contexts where `this` is not the exact instance, triggering “Receiver must be an instance of class RedisCluster”.
fixes#2967
As per the documentation (https://redis.io/docs/latest/commands/client-setinfo):
Client libraries are expected to pipeline this command after authentication on all connections and ignore failures since they could be connected to an older version that doesn't support them.
Turns out different versions of redis server return different errors, so its better to catch all.
fixes#2968
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>
* fix(client): cache subsequent clients
we dont need to recreate a client if
its config hasnt changed
fixes#2954
* handle circular structures
* make cache generic
> FT.AGGREGATE returns an array reply where each row is an array reply and represents a single aggregate result.
The integer reply at position 1 does not represent a valid value.
https://redis.io/docs/latest/commands/ft.aggregate/#return
> FT.AGGREGATE returns an array reply where each row is an array reply
and represents a single aggregate result.
> The integer reply at position 1 does not represent a valid value.
We now calculate the result length bazed on the number of results
instead of the integer reply at pos 1
* fix: fix various command import issues
there was some sort of a circular dependency
in <module>/lib/commands/index.ts for various modules
fixes#2937fixes#2941
* remove redundant definition
* 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