Skip to content

Releases: redis/redis-py

5.0.0

15 Aug 09:57
28cc65c
Compare
Choose a tag to compare

What's new?

Triggers and Functions support

Triggers and Functions allow you to execute server-side functions triggered when key values are modified or created in Redis, a stream entry arrival, or explicitly calling them. Simply put, you can replace Lua scripts with easy-to-develop JavaScript or TypeScript code. Move your business logic closer to the data to ensure a lower latency, and forget about updating dependent key values manually in your code.
Try it for yourself with Quick start

Full Redis 7.2 and RESP3 support

Python 3.7 End-of-Life

Python 3.7 has reached its end-of-life (EOL) as of June 2023. This means that starting from this date, Python 3.7 will no longer receive any updates, including security patches, bug fixes, or improvements. If you continue to use Python 3.7 post-EOL, you may expose your projects and systems to potential security vulnerabilities. We ended its support in this version and strongly recommend migrating to Python 3.10.

🐛 Bug Fixes

  • Fix timeout retrying on pipeline execution (#2812)
  • Fix socket garbage collection (#2859)

🧰 Maintenance

  • Updating client license to clear, MIT (#2884)
  • Add py.typed in accordance with PEP-561 (#2738)
  • Dependabot label change (#2880)
  • Fix type hints in SearchCommands (#2817)
  • Add sync modules (except search) tests to cluster CI (#2850)
  • Fix a duplicate word in CONTRIBUTING.md (#2848)
  • Fixing doc builds (#2869)
  • Change cluster docker to edge and enable debug command (#2853)

Contributors

We'd like to thank all the contributors who worked on this release!

@JoanFM, @Ovsyanka83, @chayim, @dependabot, @dependabot[bot], @dvora-h, @kristjanvalur, @kurtmckee, @pall-j and @shacharPash

5.0.0rc2

16 Jul 12:12
d665dbd
Compare
Choose a tag to compare
5.0.0rc2 Pre-release
Pre-release

Changes

🧰 Maintenance

  • RESP3 response-callbacks cleanup (#2841)
  • Merge master to 5.0 (#2827)

5.0.0rc1

27 Jun 18:35
d453665
Compare
Choose a tag to compare
5.0.0rc1 Pre-release
Pre-release

Changes

🔥 Breaking Changes

  • Change SISMEMBER return type to int by (#2813)

🚀 New Features

  • RESP3 modules support (#2803)

🐛 Bug Fixes

  • Fixing asyncio import (#2759)
  • Fix sharded pubsub threads issue (#2799)

🧰 Maintenance

4.6.0

25 Jun 13:12
9f50357
Compare
Choose a tag to compare

Changes

🧪 Experimental Features

  • Support JSON.MERGE command (#2761)
  • Support JSON.MSET command (#2766)

🚀 New Features

  • Extract abstract async connection class (#2734)
  • Add support for WAITAOF (#2760)
  • Introduce OutOfMemoryError exception for Redis write command rejections due to OOM errors (#2778)
  • Add WITHSCORE argument to ZRANK (#2758)

🐛 Bug Fixes

  • Fix dead weakref in sentinel connection causing ReferenceError (#2767) (#2771)
  • Fix Key Error in parse_xinfo_stream (#2788)
  • Remove unnecessary __del__ handlers (#2755)
  • Added support for missing argument to SentinelManagedConnection.read_response() (#2756)

🧰 Maintenance

  • Fix type hint for retry_on_error in async cluster (#2804)
  • Clean up documents and fix some redirects (#2801)
  • Add unit tests for the connect method of all Redis connection classes (#2631)
  • Docstring formatting fix (#2796)

Contributors

We'd like to thank all the contributors who worked on this release!

@Smit-Parmar, @TheKevJames, @aciddust, @bmacphee, @bodevone, @dvora-h, @kristjanvalur, @shacharPash, @shahar-lev, @vmihailenco and @woutdenolf

5.0.0b4

28 May 09:27
e8fc092
Compare
Choose a tag to compare
5.0.0b4 Pre-release
Pre-release

Changes

🚀 New Features

  • Add support for sharded pubsub in sync client (#2762)

🐛 Bug Fixes

  • Fixed resp3 dict parse response (#2757)

4.5.5

08 May 11:53
f056118
Compare
Choose a tag to compare

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 to ZREVRANK 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

04 May 09:42
df47761
Compare
Choose a tag to compare
5.0.0b3 Pre-release
Pre-release

Changes

This beta release includes 2 bug fixes for the RESP3 parser.

🐛 Bug Fixes

  • Fix protocol version check (#2737)
  • Fix COMMAND response callback (#2740)

5.0.0b2

24 Apr 15:07
f5abfe0
Compare
Choose a tag to compare
5.0.0b2 Pre-release
Pre-release

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.

  1. 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()
  1. 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

29 Mar 13:23
e1017fd
Compare
Choose a tag to compare

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

29 Mar 13:53
49d9cb7
Compare
Choose a tag to compare

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 )