Changes
✨ Highlights
Async maintenance notifications
redis-py now supports server-pushed maintenance notifications in the asyncio stack for both
standalone and cluster clients, bringing the async client to parity with the sync implementation.
When a Redis deployment signals maintenance events (such as node migration or failover windows), the
async client reacts through the maintenance-notifications handler (redis/maint_notifications.py and
its async integration under redis/asyncio/), allowing applications to adapt connection handling
during maintenance without downtime. (#4177)
Expanded command coverage
This release adds a batch of new command surfaces across core data types and modules:
- Lists —
LMOVEM/BLMOVEMfor moving multiple elements between lists (#4174). - Sets —
SDIFFCARDandSUNIONCARDcardinality commands (#4171). - Streams —
MAXCOUNT/MAXSIZEoptions forXREADandXREADGROUP(#4173). - Time Series —
TS.READ(#4170),TS.QUERYLABELS(#4197),TS.NRANGE/TS.NREVRANGE(#4163),
and anexclude_empty(EXCLUDEEMPTY) option forTS.MRANGE/TS.MREVRANGE(#4188). - Search —
FT.ALIASLIST(#4198) and aCOLLECTreducer for aggregations (#4179). - Sentinel — replica sentinel aliases (#4127).
🚀 New Features
- Add replica sentinel aliases (#4127)
- Add TS.NRANGE and TS.NREVRANGE support to the timeseries command surface (#4163)
- feat: add TS.READ command support to the timeseries module (#4170)
- feat: add SDIFFCARD and SUNIONCARD command support (#4171)
- feat: add MAXCOUNT/MAXSIZE support to XREAD and XREADGROUP (#4173)
- feat: add LMOVEM and BLMOVEM commands for moving multiple list elements (#4174)
- feat: add async maintenance-notifications support for standalone and cluster clients (#4177)
- feat: add COLLECT reducer support to search aggregations (#4179)
- feat: add exclude_empty (EXCLUDEEMPTY) option to TS.MRANGE and TS.MREVRANGE (#4188)
- feat: add TS.QUERYLABELS support to the timeseries command surface (#4197)
- feat: add FT.ALIASLIST support (#4198)
⚠️ Experimental
- feat: add client-side HIMPORT fieldset support for standalone and cluster clients (#4205)
The feature considered unstable and public API might be changed in the future minor version
🐛 Bug Fixes
- fix: detect closed pooled connection without consuming pending push data (RESP3 + hiredis) (#4156)
- Fix Sentinel pool capacity loss after failover (#4193)
- fix: Restore NEVER_DECODE option for FT.SEARCH with protocol=3 (#4196)
- Decode ACL LOG string values on the default RESP3 legacy callback (#4201)
- fix: Fixed double decoding issue with unquote() (#4222)
- Fix lat/lon swap in search querystring geo() helper (#4223)
- Fix FIELDNAME alias dropping first character of un-prefixed fields (#4224)
🧰 Maintenance
- ci: report test duration metrics to Grafana Cloud (PAWS) (#4132)
- fix(hiredis): raise ConnectionError instead of AttributeError on concurrent disconnect (#4136)
- docs: consolidate AI-agent guidance into root AGENTS.md and portable agents/skills (#4159)
- Bump actions/checkout from 6 to 7 (#4160)
- Bump rojopolis/spellcheck-github-actions from 0.60.0 to 0.62.0 (#4161)
- test(search): add multi-language RediSearch coverage, re-enable search module pipeline tests, add 8.10 to CI matrix (#4162)
- Remove stale "connection" arg from get_resolved_ip docstring (#4164)
- Add context manager support to ConnectionPool (#4167)
- test: add unit tests for cluster key_slot hash-tag logic (#4168)
- Add unit tests for string helper utilities (#4180)
- test: add unit tests for decode_field_value (#4181)
- Add unit tests for extract_expire_flags and truncate_text (#4183)
- fix: add close()/aclose() to Sentinel to release sentinel client pools (#4184)
- test: add FT.SEARCH server-timeout coverage for return and fail policies (#4186)
- test: run the standard suite against an external Redis Enterprise database (#4189)
- build: bump Read the Docs build.os from ubuntu-20.04 to ubuntu-24.04 (#4190)
- fix: add missing type annotations to LockError and RedisClusterException (#4194)
- test: add VectorField RERANK serialization tests for sync and async search (#4202)
We'd like to thank all the contributors who worked on this release!
@LOGESHWAR123 @kiryazovi-redis @Stunned1 @eeshsaxena @sean-kim05 @Brumbelow @Sanjays2402 @nazarli-shabnam @chuenchen309 @petyaslavova