Releases: redis/redis-py
7.0.0b3
Changes
Main feature introduced in this beta release is a new type of client MultiDBClient
. The purpose of this client is a communication with multiple databases that are eventually consistent (Active-Active setup) and handling failures by failover across databases. More information could be found in docs.
π₯ Breaking changes
- Update ping command docstrings and method return type hint (#3789)
π New Features
- Multi-database client implementation (#3784)
π§° Maintenance
- [DOC] Add complex chaining example using pipelines with builder pattern (#3774)
- Fix automation scenarion maint notification (#3788)
- Add redis 8.4-M01-pre to tested redis versions (#3790)
We'd like to thank all the contributors who worked on this release!
@zion-off @petyaslavova @kiryazovi-redis @vladvildanov
7.0.0b2
Changes
π New Features
- Adding ssl_verify_flags_config argument for ssl connection configuration (#3772)
- Adding 'auto' option to MaintNotificationsConfig.enabled (#3779)
π₯ Breaking changes
- (Breaking compared to previous beta release) Renaming of classes and configuration arguments related to maintenance push notifications handling during server upgrade or maintenance procedures (#3777 #3778)
π§° Maintenance
- Adding more e2e tests related to maintenance notifications. Extracting specific tests that validate notifications are received in new connections (#3770)
- Renaming of classes and configuration arguments related to maintenance push notifications handling during server upgrade or maintenance procedures (#3777 #3778)
- DOC-5743 BITOP examples (#3776)
- Improve stale issue management workflow (#3773)
We'd like to thank all the contributors who worked on this release!
@petyaslavova @elena-kolevska @andy-stark-redis
7.0.0b1
Changes
π New Features
- Support for maintenance push notifications handling during server upgrade or maintenance procedures. (#3756)
- Adding WITHATTRIBS option to vector set's vsim command. (#3746)
π₯ Breaking changes
- Adding abstract method declaration for cache property setter in EvictionPolicyInterface(#3732)
- Remove unused parse_list_to_dict function from helpers (#3733)
- Removing synchronous context manager handling from async RedisCluster. (#3679)
- Redis Search/Aggregate improved type annotations (#3676)
- Removing the threading.Lock locks and replacing them with RLock objects to avoid deadlocks. (#3677)
π Bug Fixes
- Removing the threading.Lock locks and replacing them with RLock objects to avoid deadlocks. (#3677)
π§° Maintenance
- Bump actions/checkout from 4 to 5 (#3760)
- Fix docstring for ssl_check_hostname (#3761)
- Typos in vectorset commands.py (#3719)
- Fixing typos in query.py (#3718)
- Typos in cluster.py (#3717)
- Fixing typos in core.py (#3720)
- Update Redis image versions for GH pipeline actions. (#3740)
- Support the customization of the timeout parameter when using a blocking connection pool with a redis cluster (#3724)
- Fix async clients safety when used as an async context manager (#3512)
- docs: fix zadd command parameter description (#3727)
- Fault injector boilerplate (#3749)
- Adding e2e scenario tests for maintenance push notifications handling. (#3758)
We'd like to thank all the contributors who worked on this release!
@scovetta @mengxunQAQ @abrookins @VincentHokie @sobolevn @hunterhogan @luka-mikec @elena-kolevska @kiryazovi-redis @petyaslavova
6.4.0
Changes
π New Features
- Added epsilon property to the vsim command (#3723)
π§° Maintenance
- Updating the latest Redis image for github pipeline testing (#3726)
We'd like to thank all the contributors who worked on this release!
@htemelski-redis @elena-kolevska @petyaslavova @vladvildanov
6.3.0
Changes
π New Features
- Add support for new BITOP operations: DIFF, DIFF1, ANDOR, ONE (#3690)
- Support new VAMANA vector index type (#3702)
- Add new stream commands (#3711)
- add async Retry eq and hash & fix ExponentialWithJitterBackoff eq (#3668)
π Bug Fixes
- Fixing sentinel command execution to allow returning of actual responses when meaningful - behaviour controlled by 'return_responses' argument. (#3191)
- Annotate deprecated_args decorator to preserve wrapped function type signature (#3701)
- Fix ConnectionPool to raise MaxConnectionsError instead of Connection⦠(#3698)
- add async Retry eq and hash & fix ExponentialWithJitterBackoff eq (#3668)
- SentinelManagedConnection searches for new master upon connection failure (#3560) (#3601)
π§° Maintenance
- fix: avoid instantiating a connection on repr_ (#3653)
- Fixing the return type hint for the transaction method in the standalone client. (#3660)
- Bump rojopolis/spellcheck-github-actions from 0.48.0 to 0.49.0 (#3665)
- Dropping integration tests with Redis 6.2 from pipeline actions. (#3659)
- Remove deprecated arg from call to ClusterPipeline (#3670)
- TransactionStrategy reset: UNWATCH only when status is watching (#3671)
- KeyT for set operations (#3190)
- Removing references to old docs site 'https://redis-py.readthedocs.io/' replaced by 'https://redis.readthedocs.io/' (#3674)
- Removing unnecessary check for tests using AsyncMock (#3432)
- Updating test images for github pipeline execution (#3678)
- Updating the latest Redis image for pipeline testing (#3695)
- Bump rojopolis/spellcheck-github-actions from 0.49.0 to 0.51.0 (#3689)
- DOC-5225 testable probabilistic dt examples (#3691)
- Update README.md (#3699)
- Convert the value to int type only if it exists in CLIENT INFO (#3688)
- Fix compatibility with latest pytest-asyncio version(1.1.0) (#3708)
- DOC-5424 time series examples (#3705)
- Adding information in connection pool class doc string for available SSLConnection class, that can be used for SSL connections (#3710)
We'd like to thank all the contributors who worked on this release!
@robertosantamaria-scopely @mahigupta @alisaifee @tzongw @earonesty @IlianIliev @ofekshenawa @andy-stark-redis @AmirHossein81Gholami @mharding-hpe @git-hulk @ngabhanenetskope @terencehonles @ManelCoutinhoSensei @petyaslavova @vladvildanov
5.3.1
v6.1.1
Changes
π Bug Fixes
- Revert wrongly changed default value for
check_hostname
when instantiatingRedisSSLContext
(#3655) - Fixed potential deadlock from unexpected
__del__
call (#3654)
We'd like to thank all the contributors who worked on this release!
@vladvildanov @petyaslavova
6.2.0
Changes
π New Features
- Add
dynamic_startup_nodes
parameter to async RedisCluster (#3646) - Support RESP3 with
hiredis-py
parser (#3648) - [Async] Support for transactions in async
RedisCluster
client (#3649)
π Bug Fixes
- Revert wrongly changed default value for
check_hostname
when instantiatingRedisSSLContext
(#3655) - Fixed potential deadlock from unexpected
__del__
call (#3654)
π§° Maintenance
- Update
search_json_examples.ipynb
: Fix the old importindexDefinition
->index_definition
(#3652) - Remove mandatory update of the CHANGES file for new PRs. Changes file will be kept for history for versions < 4.0.0 (#3645)
- Dropping
Python 3.8
support as it has reached end of life (#3657) - fix(doc): update Python print output in json doctests (#3658)
- Update redis-entraid dependency (#3661)
We'd like to thank all the contributors who worked on this release!
@JCornat @ShubhamKaudewar @uglide @petyaslavova @vladvildanov
6.1.0
Changes
π New Features
- Support for transactions in
RedisCluster
client (#3611) - Add equality and hashability to
Retry
and backoff classes (#3628)
π Bug Fixes
- Fix RedisCluster
ssl_check_hostname
not set to connections. For SSL verification withssl_cert_reqs="none"
, check_hostname is set toFalse
(#3637)
Important: The default value for thecheck_hostname
field ofRedisSSLContext
has been changed as part of this PR - this is a breaking change and should not be introduced in minor versions - unfortunately, it is part of the current release.
The breaking change is reverted in the next release to fix the behavior --> 6.2.0 - Prevent RuntimeError while reinitializing clusters - sync and async (#3633)
- Add equality and hashability to
Retry
and backoff classes (#3628) - fixes integration with Django RQ - Fix
AttributeError
onClusterPipeline
(#3634)
π§° Maintenance
- Updating the readme and lib version to contain the changes from the latest stable release (#3644)
- Export
REDIS_MAJOR_VERSION
correctly in run-tests (#3642) - Fix matrix in
hiredis-py-integration.yaml
(#3641) - Test against unstable hiredis-py (#3617)
- Adding return types for the
RedisModuleCommands
class (#3632) - Updating Redis 8 test image for GH pipeline (#3639)
- Allow newer PyJWT versions (#3636)
- Change type hints with possible
None
args or return types to be annotated withOptional
- includes commands incore.py
and json commands (#3610)
π Special Thanks
A big thank you to our collaborators at Scopely for their valuable contributions to this release! Your support and improvements help move the project forward β we appreciate it!
Contributors
We'd like to thank all the contributors who worked on this release!
@robertosantamaria-scopely @sentrivana @terencehonles @kesha1225 @aberres @uglide @omerfeyzioglu @petyaslavova @vladvildanov @andy-stark-redis
6.0.0
Changes
π New Features
- New hash commands with expiration options support are added - HGETDEL, HGETEX, HSETEX (#3570)
- 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)
π§ͺ Experimental Features
- Adding VectorSet commands support. (#3584)
π₯ Breaking changes
- Changing the default value for ssl_check_hostname to True, to ensure security validations are not skipped by default (#3626)
Important: When connecting to a Redis master via Sentinel, you may need to set ssl_check_hostname=False if the Sentinel service is not configured to return hostnames.
Refer to issue #3629 for more details. - Updated default value of 'require_full_coverage' argument to true for sync Cluster client to match sync/async cluster APIs (#3434)
- Adding default retry configuration changes for cluster clients (#3622)
Important: When instantiating a cluster clientretry
object becomes mandatory.- If retry object is not provided a default one is created with ExponentialWithJitterBackoff strategy and number of retries synced with 'cluster_error_retry_attempts'
- In case a retry object is provided, its number of retries will be used for cluster operations number of retries and 'cluster_error_retry_attempts' will be ignored
- Argument 'cluster_error_retry_attempts' is now deprecated
- For Async Cluster Client the argument 'connection_error_retry_attempts' is completely removed
- Updating default retry strategy for standalone clients. 3 retries with ExponentialWithJitterBackoff become the default config. (#3614)
- Removing 'charset' and 'errors' inputs from the Redis initialization arguments - deprecated 3 years ago. (#3608)
- 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 default retry configuration changes for cluster clients (#3622)
- Updating default retry strategy for standalone clients. 3 retries with ExponentialWithJitterBackoff become the default config. (#3614)
- Marks old RediSearch 1.0 commands as deprecated (#3606)
- 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
- Handling some special values when transforming response data into list (issue #3573) (#3586)
- Fixed infinitely recursive health checks (#3557)
- 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)
- 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
- Updating pipeline tests to use test libs image with RC2. Updating timeseries tests. (#3623)
- Fixing flaky tests - part 2 (#3592)
- DOC-5107 added hash examples for index/query intro page (#3609)
- DOC-5073 vector set quantization and dimension reduction examples (#3597)
- Fixing some sporadically failing tests - part 1 (#3589)
- DOC-5073 added examples for vector sets intro page (#3590)
- 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)
- 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)
- 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!
@elena-kolevska @petyaslavova @vladvildanov @andy-stark-redis @JimNero009 @donbowman @julianolm @666romeo @three-kinds @bssyousefi @mbilski @Yard1 @bacchuswng @noirbee @nbertram @birthdaysgift @Perlence @excitoon @dimbleby @shenxiangzhuang @paololazzari @dwdougherty @niklasbec @byeongjulee222 @befeleme @djroze @BaseMax @dicej @akx @cavemanpi @lattwood @rbs333 @rohansingh @allrob23