6.2.0-beta.0
✨ Highlights
This release brings a broad wave of new command coverage across the client and modules. The time-series package gains the most: new TS.NRANGE/TS.NREVRANGE multi-key pivot commands, a TS.READ cursor reader, TS.QUERYLABELS, EXCLUDEEMPTY on MRANGE/MREVRANGE, and multi-aggregator support. RediSearch adds FT.ALIASLIST, a COLLECT reducer for FT.AGGREGATE, HNSW RERANK, timeout warnings on the FT.SEARCH family, and the full set of stemmer languages. The core client adds SUNIONCARD/SDIFFCARD, LMOVEM/BLMOVEM, ZREVRANK WITHSCORE, COMMAND DOCS, and XREAD MAXCOUNT/MAXSIZE. A large batch of correctness fixes lands for zero-valued optional arguments (LIMIT 0, DB 0, SAMPLES 0, ENTRIESREAD 0, IDLETIME/FREQ 0, ENTRIESADDED 0) that were previously dropped from the wire, alongside several cluster and sentinel connection-lifecycle fixes.
The new HIMPORT command family (managed fieldset lifecycle) ships as experimental — see the warning below.
🚀 New Features
- feat: add COMMAND DOCS support (#3362) — @Hashim1999164
- feat(client): add LMOVEM and BLMOVEM commands (#3340) — @nkaradzhov
- feat(client): add SUNIONCARD and SDIFFCARD set cardinality commands (#3336) — @nkaradzhov
- feat(client): add ZREVRANK WITHSCORE command (#3279) — @raashish1601
- feat(xread): add MAXCOUNT and MAXSIZE support (#3335) — @nkaradzhov
- feat(search): expose timeout warnings on the FT.SEARCH family (#3338) — @nkaradzhov
- feat(search): add missing RediSearch stemmer languages (#3350) — @nkaradzhov
- feat(search): add FT.ALIASLIST command (#3351) — @nkaradzhov
- feat(search): add RERANK parameter for HNSW vector fields (#3356) — @nkaradzhov
- feat(search): add COLLECT reducer to FT.AGGREGATE (#3310) — @nkaradzhov
- feat(time-series): add TS.NRANGE and TS.NREVRANGE multi-key pivot commands (#3337) — @nkaradzhov
- feat(time-series): support multiple aggregators per key in TS.NRANGE/TS.NREVRANGE (#3360) — @nkaradzhov
- feat(time-series): add TS.QUERYLABELS (LABELS and VALUES forms) (#3354) — @nkaradzhov
- feat(time-series): add EXCLUDEEMPTY to TS.MRANGE and TS.MREVRANGE (#3352) — @nkaradzhov
- feat(time-series): add TS.READ cursor read command (#3322) — @nkaradzhov
- feat(json): add reviver support to GET, MGET, and ARRPOP (#3205) — @JeanSamGirard
⚠️ Experimental
- feat(client): add HIMPORT command family with managed fieldset lifecycle (#3381) — @nkaradzhov. The
HIMPORTfamily and itsFieldsetRegistry/PreparedFieldsetsAPI are experimental and unstable; the surface may change or be removed in a future release. Do not depend on it in production.
🐛 Bug Fixes
- fix(client): include acquire timeout duration in pool timeout error message (#3382) — @Piyush0049
- fix(client): reject in-flight connect attempt when socket dies during initiator (#3374) — @nkaradzhov
- fix(client): clear neighbor pointers when removing the head node (#3320) — @abhijeetkumarsah92
- fix(client): XADD/XTRIM with LIMIT 0 must emit the argument (#3342) — @Develop-KIM
- fix(client): XGROUP CREATE/SETID with ENTRIESREAD 0 must emit the argument (#3333) — @Develop-KIM
- fix(client): XSETID with ENTRIESADDED 0 must emit the argument (#3324) — @spokodev
- fix(client): MEMORY USAGE must emit SAMPLES when 0 (#3328) — @Develop-KIM
- fix(client): RESTORE with IDLETIME/FREQ 0 must emit the argument (#3323) — @spokodev
- fix(client): GETEX PXAT with Date must encode milliseconds (#3317) — @spokodev
- fix(client): COPY with DB 0 must emit the DB argument (#3318) — @spokodev
- fix(cluster): rebind abort/timeout listeners when a command moves to another queue (#3367) — @GiHoon1123
- fix(cluster): extractAllCommands only returned the first queued command (#3364) — @GiHoon1123
- fix(cluster): reject commands before cluster topology is ready (#3321) — @GiHoon1123
- fix(sentinel): reject connect() instead of hanging when the resolved master is unreachable (#3331) — @GiHoon1123
- fix(search): preserve zero FT.CREATE scores (#3355) — @alencristen
- fix: hScanValuesIterator yields values instead of field names (#3344) — @winklemad
- fix: remove dangling agent symlinks that break checkout (#3334) — @nkaradzhov
🧰 Maintenance
- Staggered
6.2.0-beta.0releases across all workspaces (client, bloom, json, search, time-series, entraid, redis) - ci(release): skip throwaway workspace update during staggered release (#3384) — @nkaradzhov
- ci: fix release-drafter Maintenance category key (#3358) — @nkaradzhov
- ci(documentation): cap GITHUB_TOKEN to contents: read (#3291) — @arpitjain099
- chore(tests): bump default docker test image to 8.10 (#3383, #3319, #3348) — @nkaradzhov
- chore(docs): update security email (#3379) — @nkaradzhov
- chore: bump metrics exporter (#3375) — @bobymicroby
- chore(skills): emit maintainer comments without blockquote markers (#3373) — @nkaradzhov
- chore: add agent skills and tooling configs (#3316) — @nkaradzhov
- chore(deps): bump jws from 3.2.2 to 3.2.3 (#3372) — @dependabot
- chore(deps): bump on-headers and express-session (#3371) — @dependabot
- chore(deps): bump uuid and nyc (#3370) — @dependabot
- chore(deps): bump esbuild and tsx (#3309) — @dependabot
- refactor(test-utils): single source for default docker test image config (#3349) — @nkaradzhov
- test: run client command specs against an external Redis Enterprise database (#3341) — @kiryazovi-redis
- test(scenario): tolerate at-least-once duplicates during pub/sub migrate handoff (#3345) — @kiryazovi-redis
- test(search): add non-English language coverage for FT.SEARCH (#3339) — @nkaradzhov
- test(client): add message assertion test for XCLAIM JUSTID (#3376) — @Piyush0049
- test(client): fix flaky cluster PubSub listener-move test (#3347, #3357) — @nkaradzhov
- fix(client): stabilize flaky LATENCY LATEST test (#3326) — @nkaradzhov
- docs: add CommonJS basic example to README (#3359) — @Hashim1999164
- docs: update end event description to reference close() and destroy() (#3332) — @Wnayar
- docs(cluster): document that rootNodes config is not inherited by node connections (#3327) — @nkaradzhov
- docs(contributing): document Docker Desktop host networking requirement for tests on macOS/Windows (#3330) — @nkaradzhov
- docs(skills): improve implement-command guidance (#3353) — @nkaradzhov
New Contributors
- @Hashim1999164 made their first contribution in #3362
- @Piyush0049 made their first contribution in #3382
- @GiHoon1123 made their first contribution in #3367
- @spokodev made their first contribution in #3324
- @Develop-KIM made their first contribution in #3342
- @alencristen made their first contribution in #3355
- @JeanSamGirard made their first contribution in #3205
- @winklemad made their first contribution in #3344
- @abhijeetkumarsah92 made their first contribution in #3320
- @Wnayar made their first contribution in #3332
- @arpitjain099 made their first contribution in #3291
Full Changelog: 9ba65dd...043d304