releases.shpreview
Redis/redis-py

redis-py

$npx @buildinternet/releases show redis-py
Mon
Wed
Fri
MayJunJulAugSepOctNovDecJanFebMarApr
Less
More
Releases7Avg2/moVersionsv7.1.1 → v8.0.0b2
Apr 23, 2024

Changes

🐛 Bug Fixes

  • Make it possible to customize SSL ciphers (#3212)
Mar 10, 2024

Changes

🐛 Bug Fixes

  • Fix breaking change: message in LockError is now optional (#3176)

🧰 Maintenance

  • Bump release-drafter/release-drafter from 5 to 6 (#3171)
  • Bump rojopolis/spellcheck-github-actions from 0.35.0 to 0.36.0 (#3172)
  • Remove redundant async-timeout dependency (#3177)
Feb 29, 2024

Changes

How to try Client-Side Caching

  1. Install redis-py 5.1.0b4
  2. Use the following code example to get started:
import redis

# enable csc
r = redis.Redis(
    "localhost", 6379, protocol=3,
    cache_enabled=True, cache_ttl=100, cache_max_size=1000,
    # cache_blacklist=["GET", "LLEN"] # if needed, you can exclude certain commands from caching
)

r.set("foo", "bar")
r.get("foo")
r.get("foo")  # this will be fetched from cache

# manually invalidate key in cache
r.invalidate_key_from_cache("foo")

# or flush the entire cache
r.flush_cache()

🚀 New Features

  • Allow setting the minimum SSL version (#3127)
  • Add modules support to Async RedisCluster (#3115)

🐛 Bug Fixes

  • Client side caching causes unexpected disconnections (#3160) (#3165)
  • Fix retry logic for pubsub and pipeline (#3134)
  • Ignore TypeError on disconnect (within multiprocess) (#3149)
  • Release already acquired connections on ClusterPipeline, when get_connection raises an exception (#3133)

🧰 Maintenance

  • Fix incorrect asserts in test and ensure connections are closed (#3004)
  • Remove typing-extensions from dependencies (#3146)
  • Revert stale issue version update (#3142)
  • Docs: Add timeout parameter for get_message example (#3129)
  • Bump codecov/codecov-action from 3 to 4 (#3131)
  • Bump actions/stale from 3 to 9 (#3132)
  • Fix grammar in BlockingConnectionPool class documentation (#3120)

Contributors

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

@AYMENJD, @AniketP04, @BackflipPenguin, @ING-XIAOJIAN, @MrDenkoV, @Pedram-Parsian, @TheBlusky, @ahmedabdou14, @akx, @chayim, @d184230, @danielzhangau, @dependabot, @dependabot[bot], @dmkulazhenko, @dvora-h, @enjoy-binbin, @hongqn, @jakob-keller, @kristjanvalur, @mattwang44, @parmenashp, @poiuj, @r0ro, @sjpotter, @tbbream, @trkwyk, @w-miller, @wKollendorf, @zakaf, @zware and @zxjlm

Feb 28, 2024

Changes

🚀 New Features

  • Allow to control the minimum SSL version (#3127)
  • Add modules support to async RedisCluster (#3115)
  • Adding lock_name to LockError (#3023)
  • Add GEOSHAPE field type for index creation of RediSearch (#2957)

🐛 Bug Fixes

  • Fix retry logic for pubsub and pipeline (#3134)
  • Ignore TypeError on disconnect (within multiprocess) (#3149)
  • Release already acquired connections on ClusterPipeline, when get_connection raises an exception (#3133)
  • Fix possible pipeline connections leak (#3104)
  • Return a copy of the response from cache (#3106)
  • Fix: HSET unexpectedly mutates the list passed to items (#3103)
  • Fix acl_genpass with bits (#3062)
  • Allow the parsing of the asking command to forward original options (#3012)
  • Fix parsing of FT.PROFILE result (#3063)
  • Use disable_decoding in async read_response with hiredis parser. (#3042)
  • Fix return types in json commands (#3071)
  • Fix Specifying Target Nodes broken hyperlink (#3072)

🧰 Maintenance

  • Fix incorrect asserts in test and ensure connections are closed (#3004)
  • Revert stale issue version update (#3142)
  • Docs: Add timeout parameter for get_message example (#3129)
  • Bump codecov/codecov-action from 3 to 4 (#3131)
  • Bump actions/stale from 3 to 9 (#3132)
  • Fix grammer in BlockingConnectionPool class documentation (#3120)
  • Updating async-timeout to 4.0.3 (#3109)
  • Fix type hint of arbitrary argument lists (#2908)
  • Fix JSON.OBJLEN type hint (#2966)
  • Fix HDEL type hint (#3029)
  • Docs: organize cluster mode part of lua scripting (#3073)
  • Update reported version deprecation in asyncio.client (#2968)
  • Make the connection callback methods public again, add documentation (#2980)
  • Update repr of important classes with module name and recommended "< … (#3001)
  • Typo in advanced features documentation (#3019)
  • Fix typos in documentation (#3016
  • Add "sum" to DUPLICATE_POLICY documentation of TS.CREATE, TS.ADD and TS.ALTER (#3027)
  • Fixed typo in ocsp.py (#3022)
  • Creating CODEOWNERS for documentation (#2993)

Contributors

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

@AYMENJD, @AniketP04, @BackflipPenguin, @ING-XIAOJIAN, @MrDenkoV, @Pedram-Parsian, @TheBlusky, @ahmedabdou14, @akx, @chayim, @d184230, @danielzhangau, @dependabot, @dependabot[bot], @dmkulazhenko, @dvora-h, @enjoy-binbin, @hongqn, @jakob-keller, @kristjanvalur, @mattwang44, @parmenashp, @poiuj, @r0ro, @sjpotter, @tbbream, @trkwyk, @w-miller, @wKollendorf, @zakaf, @zware and @zxjlm

Jan 15, 2024

Changes

🧪 Experimental Features

  • Expose delete functions, rename attributes, add AbstractCache class (#3110)
  • Support client side caching with RedisCluster (#3102)

🚀 New Features

  • Adding lock_name to LockError (#3023)

🐛 Bug Fixes

  • Fix possible pipeline connections leak (#3104)
  • Return a copy of the response from cache (#3106)
  • Fix: HSET unexpectedly mutates the list passed to items (#3103)

🧰 Maintenance

  • Updating async-timeout to 4.0.3 (#3109)
  • Fix type hint of arbitrary argument lists (#2908)
  • Fix JSON.OBJLEN type hint (#2966)
  • Fix HDEL type hint (#3029)
  • Docs: organize cluster mode part of lua scripting (#3073)

Contributors

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

@AYMENJD, @AniketP04, @BackflipPenguin, @ING-XIAOJIAN, @MrDenkoV, @Pedram-Parsian, @TheBlusky, @akx, @chayim, @d184230, @danielzhangau, @dependabot, @dependabot[bot], @dmkulazhenko, @dvora-h, @enjoy-binbin, @jakob-keller, @kristjanvalur, @mattwang44, @parmenashp, @r0ro, @sjpotter, @tbbream, @trkwyk, @zware and @zxjlm

Jan 7, 2024

Changes

🧪 Experimental Features

  • Support client side caching with ConnectionPool (#3099)

Contributors

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

@dvora-h

Jan 1, 2024

Changes

🔥 Breaking Changes

  • Removing Python 3.7 compatibility (#2928)
  • Update repr of important classes with module name and recommended "< … (#3001)
  • Prevent async ClusterPipeline instances from becoming "false-y" in ca… (#3068)

🧪 Experimental Features

  • Client side caching invalidations (standalone) (#3089)

🐛 Bug Fixes

  • Fix acl_genpass with bits (#3062)
  • Allow the parsing of the asking command to forward original options (#3012)
  • Prevent async ClusterPipeline instances from becoming "false-y" in ca… (#3068)
  • Fix parsing of FT.PROFILE result (#3063)
  • Use disable_decoding in async read_response with hiredis parser. (#3042)
  • Fix return types in json commands (#3071)
  • Fix Specifying Target Nodes broken hyperlink (#3072)

🧰 Maintenance

  • Update reported version deprecation in asyncio.client (#2968)
  • Make the connection callback methods public again, add documentation (#2980)
  • Update repr of important classes with module name and recommended "< … (#3001)
  • Typo in advanced features documentation (#3019)
  • Fix typos in documentation (#3016
  • Add "sum" to DUPLICATE_POLICY documentation of TS.CREATE, TS.ADD and TS.ALTER (#3027)
  • Fixed typo in ocsp.py (#3022)
  • Creating CODEOWNERS for documentation (#2993)

Contributors

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

@AYMENJD, @AniketP04, @BackflipPenguin, @MrDenkoV, @Pedram-Parsian, @akx, @chayim, @d184230, @danielzhangau, @dependabot, @dependabot[bot], @dvora-h, @enjoy-binbin, @jakob-keller, @kristjanvalur, @parmenashp, @r0ro, @sjpotter, @tbbream and @zware

Nov 16, 2023

Changes

🧪 Experimental Features

  • Client Side Caching (#3038)

🚀 New Features

  • Add GEOSHAPE field type for index creation of RediSearch (#2957)

🐛 Bug Fixes

  • Fix parsing resp3 dicts (#2982)
  • Fix BlockingConnectionPool.from_url parsing of timeout in query args #2983 (#2984)
  • Fix incorrect lock scope in BlockingConnectionPool (#2997)
  • Fixing type hint on from_url (#2963)

🧰 Maintenance

  • Update client.py sleep_time typing for run_in_thread function (#2977)
  • Better handling of "lost" connections for async Redis (#2999)
  • Linking to Redis learning resources (#3006)
  • Close various objects created during asyncio tests (#3005)

Contributors

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

@chayim, @d184230, @danielzhangau, @dependabot, @dependabot[bot], @dvora-h, @kristjanvalur, @r0ro and @sjpotter

Sep 26, 2023

Changes

🚀 New Features

  • Provide aclose() / close() for classes requiring lifetime management (#2898)
  • Add support for ModuleCommands in cluster (#2951)
  • Add support for multiple values in RPUSHX (#2949)
  • Add Redis.from_pool() class method, for explicitly owning and closing a ConnectionPool (#2913)

🐛 Bug Fixes

  • Fixing monitor parsing for messages containing specific substrings (#2950)
  • Cluster determine slot command name need to be upper (#2919)
  • Support timeout = 0 in search query (#2934)
  • Fix async sentinel: add push_request keyword argument to read_response (#2922)
  • Fix protocol checking for search commands (#2923)
  • Fix: SentinelManagedConnection.read_response() got an unexpected keyword argument 'push_request' (#2894)
  • Fix: automatically close connection pool for async Sentinel (#2900)
  • Save a reference to created async tasks, to avoid tasks potentially disappearing (#2816)
  • Avoid reference cycling by the garbage collector during response reading (#2932)

🧰 Maintenance

  • Type hint improvements (#2952)
  • Replace clear_connect_callbacks with _deregister_connect_callback (#2955)
  • Async fixes, remove del and other things (#2870)
  • Add pagination, sorting and grouping examples to search json example (#2890)
  • Remove process-id checks from asyncio. Asyncio and fork() does not mix. (#2911)
  • Fix resource usage and cleanup Mocks in the unit tests (#2936)
  • Remove mentions of tox (#2929)
  • Add 7.2 to supported Redis versions (#2896)
  • Fix resource warnings in unit tests (#2899)
  • Fix typo in redis-stream-example.ipynb (#2918)
  • Deprecate RedisGraph (#2927)
  • Fix redis 7.2.0 tests (#2902)
  • Fix test_scorer (search) (#2920)

Contributors

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

@AOrazaev, @akx, @anio, @chayim, @dvora-h, @elfkuzco, @hauntsaninja, @kristjanvalur, @meiravgri, @uglide and @yangbodong22011

Aug 15, 2023

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

Jul 16, 2023

Changes

🧰 Maintenance

  • RESP3 response-callbacks cleanup (#2841)
  • Merge master to 5.0 (#2827)
Jun 27, 2023

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

  • RESP3 tests (#2780) (#2806)
  • RESP3 response callbacks (#2798)
  • Adding RESP3 tests support (#2793)
Jun 25, 2023

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

May 28, 2023

Changes

🚀 New Features

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

🐛 Bug Fixes

  • Fixed resp3 dict parse response (#2757)
May 8, 2023

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

May 4, 2023

Changes

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

🐛 Bug Fixes

  • Fix protocol version check (#2737)
  • Fix COMMAND response callback (#2740)
Apr 24, 2023

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:

  • Pub/Sub (#2721)
  • Async Pub/Sub (#2721)

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()
Mar 29, 2023

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 )

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

Mar 23, 2023

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.

  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()
Latest
v8.0.0b2
Tracking Since
Oct 26, 2021
Last checked May 1, 2026