|
1 |
| -Hello! This file is just a placeholder, since this is the "unstable" branch |
2 |
| -of Redis, the place where all the development happens. |
| 1 | +================================================================================ |
| 2 | +Redis 6.2 RC1 Released Mon Dec 14 11:50:00 IST 2020 |
| 3 | +================================================================================ |
3 | 4 |
|
4 |
| -There is no release notes for this branch, it gets forked into another branch |
5 |
| -every time there is a partial feature freeze in order to eventually create |
6 |
| -a new stable release. |
| 5 | +Upgrade urgency LOW: This is the first RC of Redis 6.2. |
7 | 6 |
|
8 |
| -Usually "unstable" is stable enough for you to use it in development environments |
9 |
| -however you should never use it in production environments. It is possible |
10 |
| -to download the latest stable release here: |
| 7 | +Introduction to the Redis 6.2 release |
| 8 | +===================================== |
11 | 9 |
|
12 |
| - http://download.redis.io/releases/redis-stable.tar.gz |
| 10 | +This release is the first significant Redis release managed by the core team |
| 11 | +under the new project governance model. |
13 | 12 |
|
14 |
| -More information is available at http://redis.io |
| 13 | +Redis 6.2 includes many new commands and improvements, but no big features. It |
| 14 | +mainly makes Redis more complete and addresses issues that have been requested |
| 15 | +by many users frequently or for a long time. |
15 | 16 |
|
16 |
| -Happy hacking! |
| 17 | +Many of these changes were not eligible for 6.0.x for several reasons: |
| 18 | + |
| 19 | +1. They are not backward compatible, which is always the case with new or |
| 20 | + extended commands (that cannot be replicated to an older replica). |
| 21 | +2. They require a longer release-candidate test cycle. |
| 22 | + |
| 23 | + |
| 24 | +Here is a comprehensive list of changes in this release compared to 6.0.9, |
| 25 | +each one includes the PR number that added it, so you can get more details |
| 26 | +at https://github.com/redis/redis/pull/<number> |
| 27 | + |
| 28 | +New commands / args: |
| 29 | +* Add SMISMEMBER command that checks multiple members (#7615) |
| 30 | +* Add ZMSCORE command that returns an array of scores (#7593) |
| 31 | +* Add LMOVE and BLMOVE commands that pop and push arbitrarily (#6929) |
| 32 | +* Add RESET command that resets client connection state(#7982) |
| 33 | +* Add COPY command that copies keys (#7953) |
| 34 | +* Add ZDIFF and ZDIFFSTORE commands (#7961) |
| 35 | +* Add ZINTER and ZUNION commands (#7794) |
| 36 | +* Add GEOSEARCH/GEOSEARCHSTORE commands for bounding box spatial queries (#8094) |
| 37 | +* Add GET parameter to SET command, for more powerful GETSET (#7852) |
| 38 | +* Add exclusive range query to XPENDING (#8130) |
| 39 | +* Add exclusive range query to X[REV]RANGE (#8072) |
| 40 | +* Add GT and LT options to ZADD for conditional score updates (#7818) |
| 41 | +* Add CLIENT INFO and CLIENT LIST for specific ids (#8113) |
| 42 | +* Add IDLE argument to XPENDING command (#7972) |
| 43 | +* Add local address to CLIENT LIST, and a CLIENT KILL filter. (#7913) |
| 44 | +* Add NOMKSTREAM option to XADD command (#7910) |
| 45 | +* Add command introspection to Sentinel (#7940) |
| 46 | +* Add SENTINEL MYID subcommand (#7858) |
| 47 | + |
| 48 | +New features: |
| 49 | +* Dump payload sanitization: prevent corrupt payload causing crashes (#7807) |
| 50 | + Has flags to enable full O(N) validation (disabled by default). |
| 51 | +* ACL patterns for Pub/Sub channels (#7993) |
| 52 | +* Support ACL for Sentinel mode (#7888) |
| 53 | +* Support getting configuration from both stdin and file at the same time (#7893) |
| 54 | + Lets you avoid storing secrets on the disk. |
| 55 | + |
| 56 | +New features in CLI tools: |
| 57 | +* redis-cli RESP3 push support (#7609) |
| 58 | +* redis-cli cluster import support source and target that require auth (#7994) |
| 59 | +* redis-cli URIs able to provide user name in addition to password (#8048) |
| 60 | +* redis-cli/redis-benchmark allow specifying the prefered ciphers/ciphersuites (#8005) |
| 61 | +* redis-cli add -e option to exit with code when command execution fails (#8136) |
| 62 | + |
| 63 | +Command behavior changes: |
| 64 | +* EXISTS should not alter LRU (#8016) |
| 65 | + In Redis 5.0 and 6.0 it would have touched the LRU/LFU of the key. |
| 66 | +* OBJECT should not reveal logically expired keys (#8016) |
| 67 | + Will now behave the same TYPE or any other non-DEBUG command. |
| 68 | +* Improve db id range check for SELECT and MOVE (#8085) |
| 69 | + Changes the error message text on a wrong db index. |
| 70 | +* Modify AUTH / HELLO error message (#7648) |
| 71 | + Changes the error message text when the user isn't found or is disabled. |
| 72 | +* BITOPS length limited to proto_max_bulk_len rather than 512MB (#8096) |
| 73 | + The limit is now configurable like in SETRANGE, and APPEND. |
| 74 | +* GEORADIUS[BYMEMBER] can fail with -OOM if Redis is over the memory limit (#8107) |
| 75 | + |
| 76 | +Other behavior changes: |
| 77 | +* Optionally (default) fail to start if requested bind address is not available (#7936) |
| 78 | + If you rely on Redis starting successfully even if one of the bind addresses |
| 79 | + is not available, you'll need to tune the new config. |
| 80 | +* Limit the main db dictionaries expansion to prevent key eviction (#7954) |
| 81 | + In the past big dictionary rehashing could result in massive data eviction. |
| 82 | + Now this rehashing is delayed (up to a limit), which can result in performance |
| 83 | + loss due to hash collisions. |
| 84 | +* CONFIG REWRITE is atomic and safer, but requires write access to the config file's folder (#7824, #8051) |
| 85 | + This change was already present in 6.0.9, but was missing from the release |
| 86 | + notes. |
| 87 | +* A new incremental eviction mechanism that reduces latency on eviction spikes (#7653) |
| 88 | + In pathological cases this can cause memory to grow uncontrolled and may require |
| 89 | + specific tuning. |
| 90 | +* Not resetting "save" config when Redis is started with command line arguments. (#7092) |
| 91 | + In case you provide command line arguments without "save" and count on it |
| 92 | + being disabled, Now the defaults "save" config will kick in. |
| 93 | +* Update memory metrics for INFO during loading (#7690) |
| 94 | +* When "supervised" config is enabled, it takes precedence over "daemonize". (#8036) |
| 95 | +* Assertion and panic, print crash log without generating SIGSEGV (#7585) |
| 96 | +* Added crash log report on SIGABRT, instead of silently exiting (#8004) |
| 97 | +* Disable THP (Transparent Huge Pages) if enabled (#7381) |
| 98 | + If you deliberately enabled it, you'll need to config Redis to keep it. |
| 99 | + |
| 100 | +Bug fixes: |
| 101 | +* Handle output buffer limits for module blocked clients (#8141) |
| 102 | + Could result in a module sending reply to a blocked client to go beyond the |
| 103 | + limit. |
| 104 | +* Fix setproctitle related crashes. (#8150, #8088) |
| 105 | + Caused various crashes on startup, mainly on Apple M1 chips or under |
| 106 | + instrumentation. |
| 107 | +* A module doing RM_Call could cause replicas to get nested MULTI (#8097). |
| 108 | +* Backup/restore cluster mode keys to slots map for repl-diskless-load=swapdb (#8108) |
| 109 | + In cluster mode with repl-diskless-load, when loading failed, slot map |
| 110 | + wouldn't have been restored. |
| 111 | +* Fix oom-score-adj-values range, and bug when used in config file (#8046) |
| 112 | + Enabling setting this in the config file in a line after enabling it, would |
| 113 | + have been buggy. |
| 114 | +* Reset average ttl when empty databases (#8106) |
| 115 | + Just causing misleading metric in INFO |
| 116 | +* Disable rehash when Redis has child process (#8007) |
| 117 | + This could have caused excessive CoW during BGSAVE, replication or AOFRW. |
| 118 | +* Further improved ACL algorithm for picking categories (#7966) |
| 119 | + Output of ACL GETUSER is now more similar to the one provided by ACL SETUSER. |
| 120 | +* Fix bug with module GIL being released prematurely (#8061) |
| 121 | + Could in theory (and rarely) cause multi-threaded modules to corrupt memory. |
| 122 | +* Fix cluster redirect for module command with no firstkey. (#7539) |
| 123 | +* Reduce effect of client tracking causing feedback loop in key eviction (#8100) |
| 124 | +* Kill disk-based fork child when all replicas drop and 'save' is not enabled (#7819) |
| 125 | +* Rewritten commands (modified for propagation) are logged as their original command (#8006) |
| 126 | +* Fix cluster access to unaligned memory (SIGBUS on old ARM) #7958 |
| 127 | +* If diskless repl child is killed, make sure to reap the child pid (#7742) |
| 128 | +* Broadcast a PONG message when slot's migration is over, may reduce MOVED responses (#7571) |
| 129 | + |
| 130 | +Other improvements: |
| 131 | +* TLS Support in redis-benchmark (#7959) |
| 132 | +* Accelerate diskless master connections, and general re-connections (#6271) |
| 133 | +* Run active defrag while blocked / loading (#7726) |
| 134 | +* Performance and memory reporting improvement - sds take control of its internal fragmentation (#7875) |
| 135 | +* Speedup cluster failover. (#7948) |
| 136 | + |
| 137 | +Platform / toolchain support related improvements: |
| 138 | +* Optionally (not by default) use H/W Monotonic clock for faster time sampling (#7644) |
| 139 | +* Remove the requirements for C11 and _Atomic supporting compiler (#7707) |
| 140 | + This would allow to more easily build and use Redis on older systems and |
| 141 | + compilers again. |
| 142 | +* Fix crash log registers output on ARM. (#8020) |
| 143 | +* Raspberry build fix. (#8095) |
| 144 | +* Setting process title support for Haiku. (#8060) |
| 145 | +* DragonFlyBSD RSS memory sampling support. (#8023) |
| 146 | + |
| 147 | +New configuration options: |
| 148 | +* Enable configuring OpenSSL using the standard openssl.cnf (#8143) |
| 149 | +* oom-score-adj-values can config can now take absolute values (besides relative ones) (#8046) |
| 150 | +* TLS: Add different client cert support. (#8076) |
| 151 | +* Note that a few other changes listed above added their config options. |
| 152 | + |
| 153 | +Info fields and introspection changes: |
| 154 | +* Add INFO fields to track diskless and disk-based replication progress (#7981) |
| 155 | +* Add INFO field for main thread cpu time, and scrape system time. (#8132) |
| 156 | +* Add total_forks to INFO STATS (#8155) |
| 157 | +* Add maxclients and cluster_connections to INFO CLIENTS (#7979) |
| 158 | +* Add tracking bcast flag and client redirection in client list (#7995) |
| 159 | +* Fixed INFO client_recent_max_input_buffer includes argv array (#8065, see #7874) |
| 160 | +* Note that a few other changes listed above added their info fields. |
| 161 | + |
| 162 | +Module API changes: |
| 163 | +* Add CTX_FLAGS_DENY_BLOCKING as a unified the way to know if blocking is allowed (#8025) |
| 164 | +* Add data type callbacks for lazy free effort, and unlink (#7912) |
| 165 | +* Add data type callback for COPY command (#8112) |
| 166 | +* Add callbacks for defrag support. (#8149) |
| 167 | +* Add module event for repl-diskless-load swapdb (#8153) |
| 168 | + |
| 169 | +Module related fixes: |
| 170 | +* Moved RMAPI_FUNC_SUPPORTED so that it's usable (#8037) |
| 171 | +* Improve timer accuracy (#7987) |
| 172 | +* Allow '\0' inside of result of RM_CreateStringPrintf (#6260) |
| 173 | + |
| 174 | + |
| 175 | +Thanks to all the users and developers who made this release possible. |
| 176 | +We'll follow up with more RC releases, until the code looks production ready |
| 177 | +and we don't get reports of serious issues for a while. |
| 178 | + |
| 179 | +A special thank you for the amount of work put into this release by: |
| 180 | +- Wang Yuan |
| 181 | +- Felipe Machado |
| 182 | +- Filipe Oliveira |
| 183 | +- Tatsuya Arisawa |
| 184 | +- Yang Bodong |
| 185 | +- Jim Brunner |
| 186 | +- Wen Hui |
| 187 | +- Guy Benoish |
| 188 | +- Chen Yang |
| 189 | +- Nitai Caro |
| 190 | +- Meir Shpilraien |
| 191 | +- Madelyn Olson |
| 192 | +- maohuazhu |
| 193 | +- Valentino Geron |
| 194 | +- Tyson Andre |
| 195 | +- Michael Grunder |
| 196 | +- alexronke-channeladvisor |
| 197 | +- sundb |
| 198 | +- WuYunlong |
| 199 | +- Yoav Steinberg |
| 200 | +- Uri Shachar |
| 201 | +- Nykolas Laurentino de Lima |
| 202 | +- David CARLIER |
| 203 | + |
| 204 | + |
| 205 | +Migrating from 6.0 to 6.2 |
| 206 | +========================= |
| 207 | + |
| 208 | +Redis 6.2 is mostly a strict superset of 6.0, you should not have any problem |
| 209 | +upgrading your application from 6.0 to 6.2. However there are some small changes |
| 210 | +of behavior listed above, please make sure you are not badly affected by any of |
| 211 | +them. |
| 212 | + |
| 213 | +Specifically these sections: |
| 214 | +* Command behavior changes |
| 215 | +* Other behavior changes |
| 216 | + |
| 217 | +-------------------------------------------------------------------------------- |
| 218 | + |
| 219 | +Cheers, |
| 220 | +The Redis team |
0 commit comments