Releases: redis/redis-py
5.1.0a1
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
5.0.1
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 toread_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
5.0.0
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
π§° 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
5.0.0rc1
4.6.0
Changes
π§ͺ Experimental Features
π 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 toZRANK
(#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
4.5.5
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 toZREVRANK
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
5.0.0b2
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.
- 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()
- 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()