Skip to content

Commit f7597ab

Browse files
authored
OP: add Redis CE 7.4.x relnotes to site (#753)
1 parent 15b16e3 commit f7597ab

File tree

2 files changed

+165
-0
lines changed

2 files changed

+165
-0
lines changed
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
---
2+
Title: Redis Community Edition release notes
3+
alwaysopen: false
4+
categories:
5+
- docs
6+
- operate
7+
- stack
8+
description: Redis Community release notes for version 7.4 and later
9+
hideListLinks: true
10+
linkTitle: Redis Community Edition
11+
tags:
12+
- visible
13+
weight: 40
14+
---
15+
{{< table-children columnNames="Version&nbsp;(Release&nbsp;date)&nbsp;,Major&nbsp;changes" columnSources="LinkTitle,Description" enableLinks="LinkTitle" >}}
Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
---
2+
Title: Redis Community Edition 7.4 release notes
3+
alwaysopen: false
4+
categories:
5+
- docs
6+
- operate
7+
- stack
8+
description: First GA release of Redis Community Edition 7.4.
9+
linkTitle: v7.4.0 (July 2024)
10+
min-version-db: blah
11+
min-version-rs: blah
12+
weight: 100
13+
---
14+
## Redis Community Edition 7.4.1 (October 2024)
15+
16+
Upgrade urgency SECURITY: See security fixes below.
17+
18+
### Security fixes
19+
* (CVE-2024-31449) Lua library commands may lead to stack overflow and potential RCE.
20+
* (CVE-2024-31227) Potential Denial-of-service due to malformed ACL selectors.
21+
* (CVE-2024-31228) Potential Denial-of-service due to unbounded pattern matching.
22+
23+
For more information, see the [Redis blog post](https://redis.io/blog/security-advisory-cve-2024-31449-cve-2024-31227-cve-2024-31228/) about these vulnerabilities.
24+
25+
## Redis Community Edition 7.4 (July 2024)
26+
27+
This is the General Availability release of Redis Community Edition 7.4.
28+
29+
**Changes to new 7.4 features (compared to 7.4 RC2)**
30+
* [#13391](https://github.com/redis/redis/pull/13391),[#13438](https://github.com/redis/redis/pull/13438) Hash - expiration of individual fields: RDB file format changes
31+
* [#13372](https://github.com/redis/redis/pull/13372) Hash - expiration of individual fields: rename and fix counting of `expired_subkeys` metric
32+
* [#13372](https://github.com/redis/redis/pull/13372) Hash - expiration of individual fields: rename `INFO` keyspace field to `subexpiry`
33+
34+
**Configuration parameters**
35+
* [#13400](https://github.com/redis/redis/pull/13400) Add hide-user-data-from-log - allows hiding user data from the log file
36+
37+
**Bug fixes**
38+
* [#13407](https://github.com/redis/redis/pull/13407) Trigger Lua GC after `SCRIPT LOAD`
39+
* [#13380](https://github.com/redis/redis/pull/13380) Fix possible crash due to OOM panic on invalid command
40+
* [#13383](https://github.com/redis/redis/pull/13383) `FUNCTION FLUSH` - improve Lua GC behavior and fix thread race in ASYNC mode
41+
* [#13408](https://github.com/redis/redis/pull/13408) `HEXPIRE`-like commands should emit `HDEL` keyspace notification if expire time is in the past
42+
43+
## Redis Community Edition 7.4-rc2 (June 2024)
44+
Upgrade urgency LOW: This is the second Release Candidate for Redis Community Edition 7.4.
45+
46+
**Performance and resource utilization improvements**
47+
* [#13296](https://github.com/redis/redis/pull/13296) Optimize CPU cache efficiency
48+
49+
**Changes to new 7.4 new features (compared to 7.4 RC1)**
50+
* [#13343](https://github.com/redis/redis/pull/13343) Hash - expiration of individual fields: when key does not exist - reply with an array (nonexisting code for each field)
51+
* [#13329](https://github.com/redis/redis/pull/13329) Hash - expiration of individual fields: new keyspace event: `hexpired`
52+
53+
**Modules API - Potentially breaking changes to new 7.4 features (compared to 7.4 RC1)**
54+
* [#13326](https://github.com/redis/redis/pull/13326) Hash - expiration of individual fields: avoid lazy expire when called from a Modules API function
55+
56+
## Redis Community Edition 7.4-rc1 (June 2024)
57+
58+
Upgrade urgency LOW: This is the first Release Candidate for Redis Community Edition 7.4.
59+
60+
Here is a comprehensive list of changes in this release compared to 7.2.5.
61+
62+
**New Features**
63+
* [#13303](https://github.com/redis/redis/pull/13303) Hash - expiration of individual fields. 9 commands were introduced:
64+
- `HEXPIRE` and `HPEXPIRE` set the remaining time to live for specific fields
65+
- `HEXPIREAT` and `HPEXPIREAT` set the expiration time to a UNIX timestamp for specific fields
66+
- `HPERSIST` removes the expiration for specific fields
67+
- `HEXPIRETIME` and `HPEXPIRETIME` get the expiration time for specific fields
68+
- `HTTL` and `HPTTL` get the remaining time to live for specific fields
69+
* [#13117](https://github.com/redis/redis/pull/13117) `XREAD`: new id value `+` to start reading from the last message
70+
* [#12765](https://github.com/redis/redis/pull/12765) `HSCAN`: new `NOVALUES` flag to report only field names
71+
* [#12728](https://github.com/redis/redis/pull/12728) `SORT`, `SORT_RO`: allow `BY` and `GET` options in cluster mode when the pattern maps to the same slot as the key
72+
* [#12299](https://github.com/redis/redis/pull/12299) `CLIENT KILL`: new optional filter: `MAXAGE maxage` - kill connections older than `maxage` seconds
73+
* [#12971](https://github.com/redis/redis/pull/12971) Lua: expose `os.clock()` API for getting the elapsed time of Lua code execution
74+
* [#13276](https://github.com/redis/redis/pull/13276) Allow `SPUBLISH` command within `MULTI ... EXEC` transactions on replica
75+
76+
**Bug fixes**
77+
* [#12898](https://github.com/redis/redis/pull/12898) `XREADGROUP`: fix entries-read inconsistency between master and replicas
78+
* [#13042](https://github.com/redis/redis/pull/13042) `SORT ... STORE`: fix created lists to respect list compression and packing configs
79+
* [#12817](https://github.com/redis/redis/pull/12817), [#12905](https://github.com/redis/redis/pull/12905) Fix race condition issues between the main thread and module threads
80+
* [#12577](https://github.com/redis/redis/pull/12577) Unsubscribe all clients from replica for shard channel if the master ownership changes
81+
* [#12622](https://github.com/redis/redis/pull/12622) `WAITAOF` could timeout or hang if used after a module command that propagated effects only to replicas and not to AOF
82+
* [#11734](https://github.com/redis/redis/pull/11734) `BITCOUNT` and `BITPOS` with nonexistent key and illegal arguments return an error, not 0
83+
* [#12394](https://github.com/redis/redis/pull/12394) `BITCOUNT`: check for wrong argument before checking if key exists
84+
* [#12961](https://github.com/redis/redis/pull/12961) Allow execution of read-only transactions when out of memory
85+
* [#13274](https://github.com/redis/redis/pull/13274) Fix crash when a client performs ACL change that disconnects itself
86+
* [#13311](https://github.com/redis/redis/pull/13311) Cluster: Fix crash due to unblocking client during slot migration
87+
88+
**Security improvements**
89+
* [#13108](https://github.com/redis/redis/pull/13108) Lua: LRU eviction for scripts generated with `EVAL` *** BEHAVIOR CHANGE ***
90+
* [#12961](https://github.com/redis/redis/pull/12961) Restrict the total request size of `MULTI ... EXEC` transactions
91+
* [#12860](https://github.com/redis/redis/pull/12860) Redact ACL username information and mark `*-key-file-pass configs` as sensitive
92+
93+
94+
**Performance and resource utilization improvements**
95+
* [#12838](https://github.com/redis/redis/pull/12838) Improve performance when many clients call `PUNSUBSCRIBE` / `SUNSUBSCRIBE` simultaneously
96+
* [#12627](https://github.com/redis/redis/pull/12627) Reduce lag when waking `WAITAOF` clients and there is not much traffic
97+
* [#12754](https://github.com/redis/redis/pull/12754) Optimize `KEYS` when pattern includes hashtag and implies a single slot
98+
* [#11695](https://github.com/redis/redis/pull/11695) Reduce memory and improve performance by replacing cluster metadata with slot specific dictionaries
99+
* [#13087](https://github.com/redis/redis/pull/13087) `SCRIPT FLUSH ASYNC` now does not block the main thread
100+
* [#12996](https://github.com/redis/redis/pull/12996) Active memory defragmentation efficiency improvements
101+
* [#12899](https://github.com/redis/redis/pull/12899) Improve performance of read/update operation during rehashing
102+
* [#12536](https://github.com/redis/redis/pull/12536) `SCAN ... MATCH`: Improve performance when the pattern implies cluster slot
103+
* [#12450](https://github.com/redis/redis/pull/12450) `ZRANGE ... LIMIT`: improved performance
104+
105+
106+
**Other general improvements**
107+
* [#13133](https://github.com/redis/redis/pull/13133) Lua: allocate VM code with jemalloc instead of libc and count it as used memory *** BEHAVIOR CHANGE ***
108+
* [#12171](https://github.com/redis/redis/pull/12171) `ACL LOAD`: do not disconnect all clients *** BEHAVIOR CHANGE ***
109+
* [#13020](https://github.com/redis/redis/pull/13020) Allow adjusting defrag configurations while active defragmentation is running
110+
* [#12949](https://github.com/redis/redis/pull/12949) Increase the accuracy of avg_ttl (the average keyspace keys TTL)
111+
* [#12977](https://github.com/redis/redis/pull/12977) Allow running `WAITAOF` in scripts
112+
* [#12782](https://github.com/redis/redis/pull/12782) Implement TCP Keep-Alives across most Unix-like systems
113+
* [#12707](https://github.com/redis/redis/pull/12707) Improved error codes when rejecting scripts in cluster mode
114+
* [#12596](https://github.com/redis/redis/pull/12596) Support `XREAD ... BLOCK` in scripts; rejected only if it ends up blocking
115+
116+
**New metrics**
117+
* [#12849](https://github.com/redis/redis/pull/12849) `INFO`: `pubsub_clients` - number of clients in Pub/Sub mode
118+
* [#12966](https://github.com/redis/redis/pull/12966) `INFO`: `watching_clients` - number of clients that are watching keys
119+
* [#12966](https://github.com/redis/redis/pull/12966) `INFO`: `total_watched_keys` - number of watched keys
120+
* [#12476](https://github.com/redis/redis/pull/12476) `INFO`: `client_query_buffer_limit_disconnections` - count client input buffer OOM events
121+
* [#12476](https://github.com/redis/redis/pull/12476) `INFO`: `client_output_buffer_limit_disconnections` - count client output buffer OOM events
122+
* [#12996](https://github.com/redis/redis/pull/12996) `INFO`: `allocator_muzzy` - memory returned to the OS but still shows as RSS until the OS reclaims it
123+
* [#13108](https://github.com/redis/redis/pull/13108) `INFO`: `evicted_scripts` - number of evicted eval scripts. Users can check it to see if they are abusing EVAL
124+
* [#12996](https://github.com/redis/redis/pull/12996) `MEMORY STATS`: `allocator.muzzy` - memory returned to the OS but still shows as RSS until the OS reclaims it
125+
* [#12913](https://github.com/redis/redis/pull/12913) `INFO MEMORY` `mem_overhead_db_hashtable_rehashing` - memory resharding overhead (only the memory that will be released soon)
126+
* [#12913](https://github.com/redis/redis/pull/12913) `MEMORY STATS`: `overhead.db.hashtable.lut` - total overhead of dictionary buckets in databases
127+
* [#12913](https://github.com/redis/redis/pull/12913) `MEMORY STATS`: `overhead.db.hashtable.rehashing` - temporary memory overhead of database dictionaries currently being rehashed
128+
* [#12913](https://github.com/redis/redis/pull/12913) `MEMORY STATS`: `db.dict.rehashing.count` - number of top level dictionaries currently being rehashed
129+
* [#12966](https://github.com/redis/redis/pull/12966) `CLIENT LIST`: `watch` - number of keys each client is currently watching
130+
131+
**Modules API**
132+
* [#12985](https://github.com/redis/redis/pull/12985) New API calls: `RM_TryCalloc` and `RM_TryRealloc` - allow modules to handle memory allocation failures gracefully
133+
* [#13069](https://github.com/redis/redis/pull/13069) New API call: `RM_ClusterKeySlot` - which slot a key will hash to
134+
* [#13069](https://github.com/redis/redis/pull/13069) New API call: `RM_ClusterCanonicalKeyNameInSlot` - get a consistent key that will map to a slot
135+
* [#12486](https://github.com/redis/redis/pull/12486) New API call: `RM_AddACLCategory` - allow modules to declare new ACL categories
136+
137+
138+
**Configuration parameters**
139+
* [#12178](https://github.com/redis/redis/pull/12178) New configuration parameters: `max-new-connections-per-cycle` and `max-new-tls-connections-per-cycle` to limit the number of new client connections per event-loop cycle
140+
* [#7351](https://github.com/redis/redis/pull/7351) Rename some CPU configuration parameters for style alignment. Added alias to the old names to avoid breaking change
141+
142+
**CLI tools**
143+
* [#10609](https://github.com/redis/redis/pull/10609) redis-cli: new `-t <timeout>` argument: specify server connection timeout in seconds
144+
* [#11315](https://github.com/redis/redis/pull/11315) redis-cli: new `-4` and `-6` flags to prefer IPV4 or IPV6 on DNS lookup
145+
* [#12862](https://github.com/redis/redis/pull/12862) redis-cli: allows pressing up arrow to return any command (including sensitive commands which are still not persisted)
146+
* [#12543](https://github.com/redis/redis/pull/12543) redis-cli: add reverse history search (like Ctrl+R in terminals)
147+
* [#12826](https://github.com/redis/redis/pull/12826) redis-cli: add `--keystats` and `--keystats-samples` to combines `--memkeys` and `--bigkeys` with additional distribution data
148+
* [#12735](https://github.com/redis/redis/pull/12735) redis-cli: fix: `--bigkeys` and `--memkeys` now work on cluster replicas
149+
* [#9411](https://github.com/redis/redis/pull/9411) redis-benchmark: add support for binary strings
150+
* [#12986](https://github.com/redis/redis/pull/12986) redis-benchmark: fix: pick random slot for a node to distribute operation across slots

0 commit comments

Comments
 (0)