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 30, 2025

Changes

🚀 New Features

Token-based authentication:

  • Added StreamingCredentialProvider interface (#3445)
  • Extended CredentialProvider class with get_credentials_async method (#3445)
  • Added event-driven entities (Dispatcher, Listener, Events) (#3445)

New StreamingCredentialProvider interface was added with an idea to integrate redis-py with credential providers that stream an events that should be handled by given listeners.

Check the documentation for the quick start guide.

CredentialProvider instance creation interface was enhanced. Feel free to check the updated documentation

Other features:

  • Exponential with jitter backoff (#3550)
  • Adding load balancing strategy configuration to cluster clients(replacement for 'read_from_replicas' config) (#3563)

⚠️ Deprecations

  • Deprecating unused arguments in connection pools's get_connection functions(#3517 #3625)
  • Adding load balancing strategy configuration to cluster clients(replacement for 'read_from_replicas' config) (#3563)

🐛 Bug Fixes

  • When SlotNotCoveredError is raised, the cluster topology should be reinitialized as part of error handling and retrying of the commands. (#3621)
  • Fixed Token-based authentication documentation
  • Fixed bug with missing PyJWT dependency (#3462)
  • Fixed flacky TokenManager test (#3468)
  • Fix incorrect attribute reuse in redis.connection.CacheProxyConnection (#3456)
  • Moved self._lock initialisation to Pool constructor (#3473)
  • Remove decreasing of created connections count when releasing not owned by connection pool connection(fixes issue #2832). (#3514)

🧰 Maintenance

  • Updated CredentialProvider test infrastructure (#3502)
  • Expand type for EncodedT (#3472)
  • DOC-4423: add TCEs for various command pages (#3476)
  • DOC-4345 added testable JSON search examples for home page (#3407)
  • DOC-4796 fixed capped lists example (#3493)
  • Added unit test fix to improve compatibility with MacOS (#3486)
  • Added missing type hints (#3494 #3495 #3496 #3357)
  • Replacing the redis and redis-stack-server images with redis-libs-tests image in test infrastructure (#3505)

Contributors

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

@uglide @woutdenolf @vladvildanov @hauntsaninja @dwdougherty @patrick91 @Vulwsztyn @JimNero009 @andy-stark-redis @petyaslavova

Apr 7, 2025

🧪 Experimental Features

  • Adding VectorSet commands support. #3584

🐛 Bug Fixes

  • Fixed infinitely recursive health checks #3557

🧰 Maintenance

  • Fix incorrect link to docs for fcall_ro command #3576
  • Improvement: Use shutdown() Before close() in connection.py #3567
  • Truncate pipeline exception message to a sane size #3530
  • Docs/raae 724/remove redis ventures #3579
  • Adding info for sentinel handling failover when Redis client is acquired with master_for() method. #3578

Contributors

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

@excitoon, @lattwood, @rbs333, @rohansingh, @allrob23, @paololazzari, @petyaslavova, @vladvildanov, @elena-kolevska

Mar 24, 2025

Changes

🚀 New Features

  • New hash commands with expiration options support are added - HGETDEL, HGETEX, HSETEX (#3570)
  • Adding load balancing strategy configuration to cluster clients(replacement for 'read_from_replicas' config) (#3563)
  • Exponential with jitter backoff (#3550)
  • Adds option not to raise an exception when leaving context manager after lock expiration (#3531)
  • Add force_master_ip support to async Sentinel client (#3524)

🔥 Breaking changes

  • Removing support for RedisGears module. (#3553). For more info you can check the deprecated Redis features
  • Removing support for RedisGraph module. (#3548). For more info you can check the deprecated Redis features
  • Fixing typing for FCALL commands to match PEP 484 (#3537)
  • Moved ClusterParser exceptions to BaseParser class (#3475)
  • Changed default dialect to 2 (#3467) - This release introduces a client-side default dialect for Redis’ search and query capabilities. By default, the client now overrides the server-side dialect with version 2, automatically appending DIALECT 2to commands like FT.AGGREGATE and FT.SEARCH. Important: Be aware that the query dialect may impact the results returned. If needed, you can revert to a different dialect version by configuring the client accordingly. You can find further details in the query dialect documentation.

⚠️ Deprecations

  • Adding load balancing strategy configuration to cluster clients(replacement for 'read_from_replicas' config, 'read_from_replicas' is deprecated) (#3563)
  • Deprecating unused arguments in connection pools's get_connection functions (#3517)
  • Adding deprecation messages for the exposed in search module commands: FT.CONFIG GET and FT.CONFIG SET (#3499 #3500 )
  • Deprecating Search module config_set and config_get commands. Adding tests for modules ACL and modules config changes in 8.0 (#3489)

🐛 Bug Fixes

  • Fixing search module dropindex function not to send invalid third parameter. Updating pipeline infra (#3564)
  • Fixing async cluster pipeline execution when client is created with cluster_error_retry_attempts=0 (#3545)
  • Fix client_list with multiple client ids (#3539)
  • Add valid Exception type to Except in ClusterPipeline (#3516)
  • Remove decreasing of created connections count when releasing not owned by connection pool connection(fixes issue #2832). (#3514)
  • Fix #3130 TimeoutError during ClusterPipeline makes the client unrecoverable (#3513)
  • Fix connection health check for protocol != 2 when auth credentials are provided and health check interval is configured (#3477)
  • Fix AttributeError when client.get_default_node() returns None (#3458)
  • fix: add TimeoutError handling in get_connection() (#1485)
  • Avoid stacktrace on process exit in Client.del() (#3397)

🧰 Maintenance

  • Type hints improvements (#3420 #3480 #3522 #3526)
  • Increasing the operations-per-run for stale issues GH action (#3556)
  • Got rid of time.time() everywhere (#3551)
  • Removing deprecated usage of forbid_global_loop=True in pytest.mark.asyncio decorator (#3542)
  • allow more recent pyopenssl (#3541)
  • Bump rojopolis/spellcheck-github-actions from 0.38.0 to 0.47.0 (#3538)
  • Fix LockError message when releasing a lock. (#3534)
  • Fix readthedocs.yml integration(#3527 #3528 #3529)
  • Adding vector search tests for types int8/uint8 (#3525)
  • Adding requested resources into sdist. Fix for issue #3057 (#3511)
  • maintenance: Python 3.13 compatibility (#3510)
  • Adding unit test for core info command related to modules info (#3507)
  • Replacing the redis and redis-stack-server images with redis-libs-tests image in test infrastructure (#3505)
  • Update connection_examples.ipynb (#3504)
  • Update Python imports in doc examples (index_definition => indexDefinition) (#3490)
  • DOC-4736 added geo indexing examples (#3485)
  • Updated test infrastructure with latest versions (#3484)
  • fix: update redis university url, the old link doesn't work (#3481)
  • Fix #3464: Correct misleading exception_handler example in docs (#3474)
  • Added Redis 8.0 to test matrix (#3469)
  • Added workflow_dispatch for pypi release workflow (#3465)
  • Avoid the multiprocessing forkserver method in Python 3.14 (#3442)
  • Fix inaccurate docstring for unwatch() (#3424)
  • Update README.md - Fix 'Note' - bold (#3413)
  • skip ssl import if not available (#3078)
  • Replace flake8+isort+black with ruff (#3147)
  • Fixes minor grammar nit in documentation. (#3354)

Contributors

We'd like to thank all the contributors who worked on this release! @vladvildanov @petyaslavova @JimNero009 @donbowman @julianolm @666romeo @three-kinds @bssyousefi @mbilski @Yard1 @bacchuswng @noirbee @nbertram @birthdaysgift @Perlence @excitoon @dimbleby @shenxiangzhuang @paololazzari @andy-stark-redis @dwdougherty @niklasbec @byeongjulee222 @befeleme @djroze @BaseMax @dicej @akx @cavemanpi

Feb 11, 2025

Changes

🚀 New Features

Token-based authentication:

CredentialProvider instance creation interface was enhanced. Feel free to check the updated documentation

🐛 Bug Fixes

  • Fixed flacky TokenManager test (#3468)
  • Fix incorrect attribute reuse in redis.connection.CacheProxyConnection (#3456)
  • Moved self._lock initialisation to Pool constructor (#3473)

🧰 Maintenance

  • Updated CredentialProvider test infrastructure (#3502)
  • Expand type for EncodedT (#3472)
  • DOC-4423: add TCEs for various command pages (#3476)
  • DOC-4345 added testable JSON search examples for home page (#3407)
  • DOC-4796 fixed capped lists example (#3493)
  • Added unit test fix to improve compatibility with MacOS (#3486)
  • Added missing type hints (#3494 #3495 #3496 #3357)

Contributors

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

@petyaslavova @andy-stark-redis @hauntsaninja @dwdougherty @patrick91 @Vulwsztyn @vladvildanov

Dec 23, 2024

Changes

🚀 New Features

Includes Token-based authentication feature from previous beta. Check release notes

🐛 Bug Fixes

  • Fixed bug with missing PyJWT dependency (#3462)

Contributors

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

@woutdenolf @vladvildanov

Dec 20, 2024

Changes

🚀 New Features

Token-based authentication:

  • Added StreamingCredentialProvider interface (#3445)
  • Extended CredentialProvider class with get_credentials_async method (#3445)
  • Added event-driven entities (Dispatcher, Listener, Events) (#3445)

New StreamingCredentialProvider interface was added with an idea to integrate redis-py with credential providers that stream an events that should be handled by given listeners.

Check the documentation for the quick start guide.

🧰 Maintenance

  • Fixed package version

Contributors

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

@vladvildanov

Changes

🐛 Bug Fixes

  • Fixed Token-based authentication documentation

Contributors

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

@vladvildanov

Changes

🚀 New Features

Token-based authentication:

  • Added StreamingCredentialProvider interface (#3445)
  • Extended CredentialProvider class with get_credentials_async method (#3445)
  • Added event-driven entities (Dispatcher, Listener, Events) (#3445)

New StreamingCredentialProvider interface was added with an idea to integrate redis-py with credential providers that stream an events that should be handled by given listeners.

Check the documentation for the quick start guide.

Contributors

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

@uglide @vladvildanov

Dec 6, 2024

Changes

🐛 Bug Fixes

  • Fixed unsecured tempfile.mktemp() command usage (#3446)
  • Fixed bug with SLOWLOG GET response parsing on Redis Software (#3441)
  • Fixed issue with invoking _close() on closed event loop (#3438)

🧰 Maintenance

  • Migrate test infrastructure to new custom docker images (#3415)
  • Fixed flacky test with HEXPIREAT command (#3437)

Contributors

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

@IlianIliev @uglide @vladvildanov @teodorfn @akx

Oct 24, 2024

Changes

🚀 New Features

  • Extend AggregateRequest with scorer argument (#3409)

🧰 Maintenance

  • Pin pytest-profiling version due to the bug (#3417)

Contributors

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

@uglide @rbs333 @vladvildanov @dwdougherty

Oct 4, 2024

Changes

5.1.1

🐛 Bug Fixes

  • Fixed return type for Redis Set commands to be Set instead of List (#3399)
  • Fixed bug with partial Hiredis availability (#3400)
  • Fixed bug with async pipeline and cluster fails with some commands (#3402)

5.1.0

🚀 New Features

  • Client-side caching (#3350, #3110, #3102, #3099, #3089, #3038)

How to start with Client-side caching?

  1. Install redis-py 5.1.0
  2. Use the following code snippet:
r = Redis(protocol=3, cache_config=CacheConfig())

cache = r.get_cache()
r.set("foo", "bar")
# get key from redis and save in local cache
print(r.get("foo"))
# get key from local cache
print(cache.get(CacheKey(command="GET", redis_keys=("foo",))).cache_value)
# change key in redis (cause invalidation)
r.set("foo", "barbar")
# Retrieves a new value from server and cache it
print(r.get("foo"))
# Make sure that new value was cached
print(cache.get(CacheKey(command="GET", redis_keys=("foo",))).cache_value)

Check documentation to get more examples

🔥 Breaking Changes

  • Timeseries insertion filters for close samples (#3228)
  • Enhanced classes string representation (#3001)
  • Partial clean up of Python 3.7 compatibility (#2928)
  • Handle Redis Set data type as Python list to avoid a limitations with nested dictionaries (#3324)

Contributors

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

@vladvildanov @dmaier-redislabs @vineethvkumar @ramchandra-st @RafalBielickiIM @jules-ch

Sep 27, 2024

Changes

🚀 New Features

  • Client-side caching (#3350, #3110, #3102, #3099, #3089, #3038)

How to start with Client-side caching?

  1. Install redis-py 5.1.0
  2. Use the following code snippet:
r = Redis(protocol=3, cache_config=CacheConfig())

cache = r.get_cache()
r.set("foo", "bar")
# get key from redis and save in local cache
print(r.get("foo"))
# get key from local cache
print(cache.get(CacheKey(command="GET", redis_keys=("foo",))).cache_value)
# change key in redis (cause invalidation)
r.set("foo", "barbar")
# Retrieves a new value from server and cache it
print(r.get("foo"))
# Make sure that new value was cached
print(cache.get(CacheKey(command="GET", redis_keys=("foo",))).cache_value)

Check documentation to get more examples

🔥 Breaking Changes

  • Timeseries insertion filters for close samples (#3228)
  • Enhanced classes string representation (#3001)
  • Partial clean up of Python 3.7 compatibility (#2928)
  • Handle RESP3 sets as Python lists (#3324)

🐛 Bug Fixes

  • Handle RESP3 sets as Python lists (#3324)
  • Prevent async ClusterPipeline instances from becoming "false-y" (#3068)
  • Add hostname field to _parse_node_line (#3343)
  • More docs fixes (#3326)
  • Delete the first-defined (and thus "duplicate") Script class (#3333)
  • Catch a known DeprecationWarning when calling .close() (#3335)
  • Add missed redismod at test_commands.py (#3369)

🧰 Maintenance

  • Update README.md - mentioning redis 7.4 support (#3375)
  • Update PyPy 3.8 to 3.10 in CI (#3370)
  • Updated commands from docker-compose to docker compose (#3352)
  • Added version restrictions for pytest-asyncio (#3362)
  • Documentation examples (#3361, #3372, #3374, #3377, #3378)

Contributors

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

@AYMENJD, @AniketP04, @BackflipPenguin, @ING-XIAOJIAN, @MrDenkoV, @Pedram-Parsian, @TheBlusky, @TomerHekmati, @Wh1isper, @Zaczero, @ahmedabdou14, @akx, @andy-stark-redis, @catap, @chayim, @d184230, @danielzhangau, @daveisfera, @dependabot, @dependabot[bot], @dkuser, @dmaier-redislabs, @dmkulazhenko, @dudizimber, @dvora-h, @dwdougherty, @enjoy-binbin, @gerzse, @hongqn, @jakob-keller, @kristjanvalur, @kurtmckee, @matrey, @mattwang44, @max-muoto, @parmenashp, @poiuj, @r0ro, @sjpotter, @tbbream, @trkwyk, @uglide, @vladvildanov, @w-miller, @wKollendorf, @willfrey, @willianmrs, @zakaf, @zware and @zxjlm

Jul 30, 2024

Changes

🚀 New Features

  • Added support for ADDSCORES modifier (#3329)

Contributors

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

@vladvildanov

Jul 29, 2024

Changes

  • Resolve some docs warnings (#3322)
  • Add missing type hints for retry.py (#3250)

🔥 Breaking Changes

  • Timeseries insertion filters for close samples (#3228)

🚀 New Features

  • Hash field expiration commands (#3218)
  • Support the MAXAGE option for CLIENT KILL (#3187)
  • Support NOVALUES parameter for HSCAN (#3157)
  • Document XREAD of last message (+) (#3187)
  • Support missing/empty values in search (#3231)
  • Timeseries insertion filters for close samples (#3228)

🧰 Maintenance

  • Add extra tests for GEO search (#3244)
  • Test special characters escaping in search (#3276)

🐛 Bug Fixes

  • Decode search results at field level (#3309)
Jun 26, 2024

Changes

🐛 Bug Fixes

  • None UnixDomainSocket timeout (#3293)

🧰 Maintenance

  • Updated redis version to represent latest available build (#3296)

Contributors

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

@vladvildanov @dmaier-redislabs

Jun 20, 2024

Changes

🔥 Breaking Changes

  • Timeseries insertion filters for close samples (#3228)

🚀 New Features

  • Support missing/empty values in search (#3231)
  • Timeseries insertion filters for close samples (#3228)

🐛 Bug Fixes

  • Improve parsing of XINFO STREAM response (#3282)
  • Handle lists in the response of INFO (#3278)

🧰 Maintenance

  • Re-enable Graph tests (#3287)
  • Do not restrict pytest dependencies versions (#3286)
  • Add CODECOV token to CI (#3285)
  • Make sure the CI actually runs RESP3 tests (#3270)
  • Small fixes to doctests comments (#3280)
  • Bump actions/stale from 3 to 9 (#3170)
  • Add missing assert in json tests (#3261)
  • Bump rojopolis/spellcheck-github-actions from 0.36.0 to 0.37.0 (#3260)
  • Move code samples to master branch (#3271)
  • Test special characters escaping in search (#3276)
  • Add extra tests for GEO search (#3244)

Contributors

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

@andy-stark-redis, @dependabot[bot], @enjoy-binbin, @gerzse, @Wh1isper

Jun 13, 2024

Changes

🐛 Bug Fixes

  • Handle lists in the response of INFO
Jun 6, 2024

Changes

🚀 New Features

  • Hash field expiration commands (#3218)
  • Support NOVALUES parameter for HSCAN (#3157)
  • Support the MAXAGE option for CLIENT KILL (#3187)

🐛 Bug Fixes

  • Fix parsing of INFO response (#3265)

🧰 Maintenance

  • Use standard Redis docker image in CI (#3246)
  • Add missing type hints for backoff.py (#3249)
  • More robust parsing of memory stats response (#3247)
  • Parse FT.PROFILE response more robustly (#3245)
  • Run pyupgrade for 3.8 (#3236)
  • Fix typing for address_remap (fixes #3234) (#3235)
  • Use new Redis logo and website (#3233)
  • Update ResponseT type alias (#3227)
  • Streamline documentation style (#3232)
  • Document XREAD of last message (+) (#3188)
  • Fix CNs in test certificates (#3226)

Changes

🐛 Bug Fixes

  • Fix parsing of INFO response (#3265)
May 8, 2024

Changes

🧪 Experimental Features

  • Client side caching improvements: typing, better test coverage, bug fixes (#3216)

🐛 Bug Fixes

  • Make it possible to customize SSL ciphers (#3214)
  • Make message in LockError optional to support backwards compatibility (#3176)

🧰 Maintenance

  • Adding a twine check prior to package release (#3198)
  • Update black version to 24.3.0 (#3193)
  • Avoid workflows canceling each other out (#3183)
  • Documentation update (asyncio_examples.ipynb) (#3125)
  • Optimizing cluster initialization changing the checks for cluster-enabled flag (#3158)
  • 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 from modern Python (#3177)

Contributors

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

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

Latest
v8.0.0b2
Tracking Since
Oct 26, 2021
Last checked May 1, 2026