Skip to content

Releases: redis/redis-py

6.0.0b1

24 Mar 18:12
Compare
Choose a tag to compare
6.0.0b1 Pre-release
Pre-release

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

5.3.0b5

11 Feb 14:53
28964c1
Compare
Choose a tag to compare
5.3.0b5 Pre-release
Pre-release

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

5.3.0b4

23 Dec 10:10
Compare
Choose a tag to compare
5.3.0b4 Pre-release
Pre-release

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

5.3.0b3

20 Dec 18:21
Compare
Choose a tag to compare
5.3.0b3 Pre-release
Pre-release

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

5.3.0b2

20 Dec 18:12
Compare
Choose a tag to compare
5.3.0b2 Pre-release
Pre-release

Changes

πŸ› Bug Fixes

  • Fixed Token-based authentication documentation

Contributors

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

@vladvildanov

5.3.0b1

20 Dec 18:07
Compare
Choose a tag to compare
5.3.0b1 Pre-release
Pre-release

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

5.2.1

06 Dec 09:50
a74fa6a
Compare
Choose a tag to compare

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

5.2.0

24 Oct 15:03
166ae7b
Compare
Choose a tag to compare

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

5.1.1

04 Oct 13:02
4b3a6d0
Compare
Choose a tag to compare

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

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

5.1.0

27 Sep 16:17
7215a52
Compare
Choose a tag to compare

Changes

πŸš€ New Features

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