RedisGears 1.2 release notes
Plugins and JVM support. Python async await. Override commands API. Register functions on key miss events. Tracks new statistics. Python profiler support. Extended RedisAI integration.
Requirements
RedisGears v1.2.12 requires:
- Minimum Redis compatibility version (database): 6.0.0
- Minimum Redis Enterprise Software version (cluster): 6.0.12
1.2.12 (December 2024)
This is a maintenance release for RedisGears 1.2
Update urgency: LOW
: No need to upgrade unless there are new features or fixes.
Details
- Bug fixes:
- #1121 Recreate the virtual environment on startup. Fixes an issue where the virtual environment might point to the old version of the Python interpreter.
- #1122 Clear the last error after a successful run to avoid confusion if the error is relevant.
- #1122 Clear not-yet-started executions after unregister, pause, or error on registration occcurs. (MOD-8184)
- #1125 Fixes an issue where duplicate registration IDs are generated.
1.2.10 (October 2024)
This is a maintenance release for RedisGears 1.2
Update urgency: LOW
: No need to upgrade unless there are new features or fixes.
Details
-
Bug fixes:
- #1114 (REPLICAOF and Redis Enterprise A-A only) Cross slot violation. Avoid using
RM_Call
+SCAN
command which might replicate multiple keys deletion inside aMULTI EXEC
block when a lazy expire takes place
- #1114 (REPLICAOF and Redis Enterprise A-A only) Cross slot violation. Avoid using
-
Notes:
- RHEL7 is no longer supported
1.2.9 (March 2024)
This is a maintenance release for RedisGears 1.2
Update urgency: LOW
: No need to upgrade unless there are new features or fixes.
Details
-
Features:
-
Bug fixes:
- #1097 Fix stream reader missing notification due to wrong key name comparison (comparing using case sensitive)
1.2.7 (July 2023)
This is a maintenance release for RedisGears 1.2
Update urgency: LOW
: No need to upgrade unless there are new features or fixes.
Details
-
Features:
- #972 Upgrade JVM to 17.0.7
1.2.6 (March 2023)
This is a maintenance release for RedisGears 1.2.
Update urgency: LOW
: No need to upgrade unless there are new features or fixes.
Details
-
Features:
-
Bug fixes:
- #810 Fix invalid memory access when checking if a trigger is already registered
v1.2.5 (July 2022)
This is a maintenance release for RedisGears 1.2.
Update urgency: MODERATE
: Program an upgrade of the server, but it's not urgent.
Details:
-
Bug fixes:
v1.2.4 (May 2022)
This is a maintenance release for RedisGears 1.2.
Update urgency: LOW
: No need to upgrade unless there are new features you want to use.
Details:
-
Improvements:
-
Bug fixes:
v1.2.3 (April 2022)
This is a maintenance release for RedisGears 1.2.
Update urgency: LOW
: No need to upgrade unless there are new features you want to use.
Details:
-
Improvements:
-
Bug fixes:
- #740 Fix -nan value on registration stats
v1.2.2 (February 2022)
This is the General Availability release of RedisGears 1.2.
Headlines
Plugins and JVM support
RedisGears 1.2 comes with a new plugin mechanism that allows you to decide which languages you want to load into RedisGears. Currently, we support two languages: Python and Java (JVM languages). You can decide which language you want to use using the new Plugin
configuration.
Full documentation for JVM support can be found on the Redis documentation website.
Python async await support
RedisGears provides support for Python coroutines. Each step of your gears function can now be a Python coroutine that will take the execution to the background or will wait for some event to happen. Refer to the following links for more information:
- Async Await Support
- Async Await Advanced Topics
Override commands API
You can override Redis vanilla commands with a function. For more information, refer to the RedisGears command hooks documentation.
Key miss event for read-through pattern
Requested by many users, RedisGears 1.2 allows you to register functions on key miss event. One use case for this is to implement a read-through caching pattern. For more information about this topic, refer to the following links:
- Key Miss Event in the RedisGears documentation.
- rghibernate recipe that leverages the key miss event to implement read-through from external databases.
Better visibility and analyzing tools
We improved the experience during the development phase by enabling better debugging and troubleshooting. There is still room for improvement but RedisGears 1.2 makes the first steps toward a simpler API that is easier to use. This new version allows you to name your code and upgrade it with a single Redis command. For more information, refer to the upgrade section of the RedisGears introduction documentation.
RedisGears now tracks the following new statistics to better analyze your registrations:
lastRunDurationMS
- duration in milliseconds of the last executiontotalRunDurationMS
- total runtime of all executions in millisecondsavgRunDurationMS
- average execution runtime in milliseconds
For streams, RedisGears also tracks the following data:
lastEstimatedLagMS
- gives the last batch lag (the time difference between the first batch entry in the stream and the time the entire batch finished processing)avgEstimatedLagMS
- average of thelastEstimatedLagMS
field.
The RG.DUMPREGISTRATIONS
command exposes these new statistics.
RedisGears 1.2 also adds support for a Python profiler, specifically cProfile
. For more information, refer to the documentation for the following commands:
RG.PYPROFILE STATS
RG.PYPROFILE RESET
RedisAI integration
Although RedisAI integration was already supported in v1.0, RedisGears 1.2 adds official support for all capabilities in RedisAI v1.2. The API was extended to support RedisAI DAG and was combined with the new async await API to achieve the best performance possible.
Details
Bug fixes (since 1.0.9):
- #557, #554
RG.CONFIGGET
returns user-defined configuration - #572 Lock Redis GIL when creating RedisAI DAG
- #661, #536 Added
RG.TRIGGERONKEY
- #650 Do not propagate
MULTI EXEC
on Redis 7 - #671, #558 Wait for cluster to be initialized when reading stream data
- #656 Stream reader creates more than one execution on a stream
- #676 Globals dictionary not set correctly after deserialization
- #665, #679 Allow case-insensitive event type on command reader
- #697
hashtag()
function for Redis Enterprise - #688, #545 Check
REDISMODULE_CTX_FLAGS_DENY_BLOCKING
flag before blocking the client
-
This is the first GA version of 1.2. The version inside Redis is 1.2.2 in semantic versioning. Since the version of a module in Redis is numeric, we could not add a GA flag.
-
Minimum Redis version: 6.0.0