content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisce/redisce-7.4-release-notes.md
Update urgency: HIGH: There is a critical bug that may affect a subset of users.
Update urgency: SECURITY: There are security fixes in the release.
CLIENT UNBLOCK from unblocking CLIENT PAUSEEVAL crash when error table is emptyHINCRBYFLOAT removes field expiration on replicaUpdate urgency: SECURITY: There are security fixes in the release.
CLUSTER SLOTS - TLS port update not reflected in CLUSTER SLOTSXTRIM, XADD - incorrect lag due to trimming streamUpdate urgency: SECURITY: There are security fixes in the release.
CLUSTER SLOTS - TLS port update not reflected in CLUSTER SLOTS.XTRIM, XADD - incorrect lag due to trimming stream.Update urgency: SECURITY: There are security fixes in the release.
FUNCTION FLUSH - memory leak when using jemalloc.WAITAOF returns prematurely.SLAVEOF - crash when clients are blocked on lazy free.RANDOMKEY - infinite loop during client pause.Upgrade urgency SECURITY: See security fixes below.
XINFO lag field is wrong when tombstone is after the last_id of the consume groupXTRIM does not update the maximal tombstone, leading to an incorrect lagINFO after HDEL show wrong number of hash keys with expirationcache_memory of functionsLibCtxRENAME/MOVE/SWAPDB/RESTORECLUSTER SHARDS returns empty arraySORT ... GET #: incorrect error messageUpgrade urgency SECURITY: See security fixes below.
For more information, see the Redis blog post about these vulnerabilities.
This is the General Availability release of Redis Community Edition 7.4.
Changes to new 7.4 features (compared to 7.4 RC2)
expired_subkeys metricINFO keyspace field to subexpiryConfiguration parameters
Bug fixes
SCRIPT LOADFUNCTION FLUSH - improve Lua GC behavior and fix thread race in ASYNC modeHEXPIRE-like commands should emit HDEL keyspace notification if expire time is in the pastUpgrade urgency LOW: This is the second Release Candidate for Redis Community Edition 7.4.
Performance and resource utilization improvements
Changes to new 7.4 new features (compared to 7.4 RC1)
hexpiredModules API - Potentially breaking changes to new 7.4 features (compared to 7.4 RC1)
Upgrade urgency LOW: This is the first Release Candidate for Redis Community Edition 7.4.
Here is a comprehensive list of changes in this release compared to 7.2.5.
New Features
HEXPIRE and HPEXPIRE set the remaining time to live for specific fieldsHEXPIREAT and HPEXPIREAT set the expiration time to a UNIX timestamp for specific fieldsHPERSIST removes the expiration for specific fieldsHEXPIRETIME and HPEXPIRETIME get the expiration time for specific fieldsHTTL and HPTTL get the remaining time to live for specific fieldsXREAD: new id value + to start reading from the last messageHSCAN: new NOVALUES flag to report only field namesSORT, SORT_RO: allow BY and GET options in cluster mode when the pattern maps to the same slot as the keyCLIENT KILL: new optional filter: MAXAGE maxage - kill connections older than maxage secondsos.clock() API for getting the elapsed time of Lua code executionSPUBLISH command within MULTI ... EXEC transactions on replicaBug fixes
XREADGROUP: fix entries-read inconsistency between master and replicasSORT ... STORE: fix created lists to respect list compression and packing configsWAITAOF could timeout or hang if used after a module command that propagated effects only to replicas and not to AOFBITCOUNT and BITPOS with nonexistent key and illegal arguments return an error, not 0BITCOUNT: check for wrong argument before checking if key existsSecurity improvements
EVAL *** BEHAVIOR CHANGE ***MULTI ... EXEC transactions*-key-file-pass configs as sensitivePerformance and resource utilization improvements
PUNSUBSCRIBE / SUNSUBSCRIBE simultaneouslyWAITAOF clients and there is not much trafficKEYS when pattern includes hashtag and implies a single slotSCRIPT FLUSH ASYNC now does not block the main threadSCAN ... MATCH: Improve performance when the pattern implies cluster slotZRANGE ... LIMIT: improved performanceOther general improvements
ACL LOAD: do not disconnect all clients *** BEHAVIOR CHANGE ***WAITAOF in scriptsXREAD ... BLOCK in scripts; rejected only if it ends up blockingNew metrics
INFO: pubsub_clients - number of clients in Pub/Sub modeINFO: watching_clients - number of clients that are watching keysINFO: total_watched_keys - number of watched keysINFO: client_query_buffer_limit_disconnections - count client input buffer OOM eventsINFO: client_output_buffer_limit_disconnections - count client output buffer OOM eventsINFO: allocator_muzzy - memory returned to the OS but still shows as RSS until the OS reclaims itINFO: evicted_scripts - number of evicted eval scripts. Users can check it to see if they are abusing EVALMEMORY STATS: allocator.muzzy - memory returned to the OS but still shows as RSS until the OS reclaims itINFO MEMORY mem_overhead_db_hashtable_rehashing - memory resharding overhead (only the memory that will be released soon)MEMORY STATS: overhead.db.hashtable.lut - total overhead of dictionary buckets in databasesMEMORY STATS: overhead.db.hashtable.rehashing - temporary memory overhead of database dictionaries currently being rehashedMEMORY STATS: db.dict.rehashing.count - number of top level dictionaries currently being rehashedCLIENT LIST: watch - number of keys each client is currently watchingModules API
RM_TryCalloc and RM_TryRealloc - allow modules to handle memory allocation failures gracefullyRM_ClusterKeySlot - which slot a key will hash toRM_ClusterCanonicalKeyNameInSlot - get a consistent key that will map to a slotRM_AddACLCategory - allow modules to declare new ACL categoriesConfiguration parameters
max-new-connections-per-cycle and max-new-tls-connections-per-cycle to limit the number of new client connections per event-loop cycleCLI tools
-t <timeout> argument: specify server connection timeout in seconds-4 and -6 flags to prefer IPV4 or IPV6 on DNS lookup--keystats and --keystats-samples to combines --memkeys and --bigkeys with additional distribution data--bigkeys and --memkeys now work on cluster replicas