Releases: redis/redis-py
4.5.5
Changes
🚀 New Features
- Add support for
CLIENT NO-TOUCH
(#2745) - Add support for
CLUSTER MYSHARDID
(#2704) - Add "address_remap" feature to RedisCluster (#2726)
- Add
WITHSCORES
argument toZREVRANK
command (#2725) - Improve error output for master discovery (#2720)
🐛 Bug Fixes
- Fix
XADD
: allow non negative maxlen (#2739) - Fix create single connection client from url (#2752)
- Optionally disable disconnects in read_response (#2695)
- Fix
SLOWLOG GET
return value (#2732) - Fix potential race condition during disconnection (#2719)
- Return response in case of KeyError (#2628)
- Fix incorrect usage of once flag in async Sentinel (#2718)
- Fix memory leak caused by hiredis in asyncio case (#2694)
- Really do not use asyncio's timeout lib before 3.11.2 (#2699)
🧰 Maintenance
- Clean PytestUnraisableExceptionWarning from asycio client (#2731)
- Add RedisCluster.remap_host_port, Update tests for CWE 404 (#2706)
- Updated AWS Elasticache IAM connection example (#2702)
- Update CONTRIBUTING guidelines (#2736)
- Fix
ClusterCommandProtocol
type (#2729) - Fix
TOPK
list example. (#2724) - Improving vector similarity search example (#2661)
- Update example of Redisearch creating index (#2703)
Contributors
We'd like to thank all the contributors who worked on this release!
@AYMENJD, @Anthchirp, @Avasam, @NickG123, @SoulPancake, @aciddust, @chayim, @cristianmatache, @dvora-h, @felipou, @kristjanvalur, @mirekdlugosz, @mzdehbashi-github, @oranav, @scoopex, @shacharPash and @tylerhutcherson
5.0.0b3
5.0.0b2
Changes
This release includes only support for RESP3, it should be treated as a beta. Please note response types change for those using RESP3 - meaning there breaking changes. Today this includes support for the following:
The following are not yet implemented:
- Async Pub/Sub with hiredis support, for PUSH responses.
RESP3 support introduces two different ways to enable a RESP3 redis connection, when your redis server supports it.
- redis_url has been updated to match the uri specification meaning one can now connect by:
import redis
r = redis.Redis.from_url("redis://localhost:6379?protocol=3")
r.ping()
- One can pass
protocol=3
into any existing connection object eg:
from redis.asyncio import Redis
r = Redis(host="localhost", port=6379, protocol=3)
r.ping()
4.5.4
Changes
Upgrade urgency: SECURITY, contains fixes to security issues.
- (CVE-2023-28859) - Cancelling an async future does not, properly trigger, leading to a potential data leak in specific cases.
- (CVE-2023-28858) - Cancelling an async future does not, properly trigger, leading to a potential data leak in specific cases.
🐛 Bug Fixes
- Fixing cancelled async futures (#2666)
- Fix: do not use asyncio's timeout lib before 3.11.2 (#2659)
- Fix UDS in v4.5.2: UnixDomainSocketConnection missing constructor argument (#2630)
🧰 Maintenance
- Minor fixes for #2666 and enhanced async test (#2673)
- Fix issue 2660: PytestUnraisableExceptionWarning from asycio client (#2669)
- Removing accidentally checked in files (#2642)
Contributors
We'd like to thank all the contributors who worked on this release!
@bellini666, @chayim, @dvora-h, @shacharPash and @woutdenolf
4.4.4
Changes
Upgrade urgency: SECURITY, contains fixes to security issues.
- (CVE-2023-28859) - Cancelling an async future does not, properly trigger, leading to a potential data leak in specific cases.
- (CVE-2023-28858) - Cancelling an async future does not, properly trigger, leading to a potential data leak in specific cases.
🐛 Bug Fixes
- Fixing cancelled async futures (#2671 )
5.0.0b1
Changes
This release includes only support for RESP3, it should be treated as a beta. Please note response types change for those using RESP3 - meaning there breaking changes. Today this includes support for the following:
- Sync connections
- RedisCluster connections
- Async
- AsyncCluster
- Single connections both sync and async
- RedisStack support
- Pipelines
- Sentinel
The following are not yet implemented:
- Pub/Sub
- Monitor
This release introduces two different ways to enable a RESP3 redis connection, when your redis server supports it.
- redis_url has been updated to match the uri specification meaning one can now connect by:
import redis
r = redis.Redis.from_url("redis://localhost:6379?protocol=3")
r.ping()
- One can pass
protocol=3
into any existing connection object eg:
from redis.asyncio import Redis
r = Redis(host="localhost", port=6379, protocol=3)
r.ping()
4.5.3
4.4.3
4.3.6
4.5.2
Changes
🚀 New Features
- Introduce AbstractConnection so that UnixDomainSocketConnection can call super().init (#2588)
- Added queue_class to REDIS_ALLOWED_KEYS (#2577)
- Made search document subscriptable (#2615)
- Sped up the protocol parsing (#2596)
🐛 Bug Fixes
- Fix behaviour of async PythonParser to match RedisParser as for issue #2349 (#2582)
- Replace async_timeout by asyncio.timeout (#2602)
- Update json().arrindex() default values (#2611)
🧰 Maintenance
- Coverage for pypy-3.9 (#2608)
- Developer Experience: Adding redis version compatibility details to the README (#2621)
- Remove redundant assignment to RedisCluster.nodes_manager. (#2620)
- Developer Experience: [types] update return type of smismember to list[int] (#2617)
- Developer Experience: [docs] ConnectionPool SSL example (#2605)
- Developer Experience: Fixed CredentialsProvider examples (#2587)
- Developer Experience: Update README to make pip install copy-pastable on zsh (#2584)
- Developer Experience: Fix for
lpop
andrpop
return typing (#2590)
Contributors
We'd like to thank all the contributors who worked on this release!
@CrimsonGlory, @Galtozzy, @aksinha334, @barshaul, @chayim, @davemcphee, @dvora-h, @kristjanvalur, @ryin1, @sileht, @thebarbershop, @uglide, @woutdenolf and @zakaf