From b8c67ce41b51247c02a639929e4fab20189afa1e Mon Sep 17 00:00:00 2001 From: Oran Agra Date: Mon, 14 Dec 2020 20:54:10 +0200 Subject: Redis 6.2 RC1. --- 00-RELEASENOTES | 226 +++++++++++++++++++++++++++++++++++++++++++++++++++++--- src/help.h | 89 +++++++++++++++++++--- src/version.h | 4 +- 3 files changed, 294 insertions(+), 25 deletions(-) diff --git a/00-RELEASENOTES b/00-RELEASENOTES index ce472159e..8fdfcf760 100644 --- a/00-RELEASENOTES +++ b/00-RELEASENOTES @@ -1,16 +1,220 @@ -Hello! This file is just a placeholder, since this is the "unstable" branch -of Redis, the place where all the development happens. +================================================================================ +Redis 6.2 RC1 Released Mon Dec 14 11:50:00 IST 2020 +================================================================================ -There is no release notes for this branch, it gets forked into another branch -every time there is a partial feature freeze in order to eventually create -a new stable release. +Upgrade urgency LOW: This is the first RC of Redis 6.2. -Usually "unstable" is stable enough for you to use it in development environments -however you should never use it in production environments. It is possible -to download the latest stable release here: +Introduction to the Redis 6.2 release +===================================== - http://download.redis.io/releases/redis-stable.tar.gz +This release is the first significant Redis release managed by the core team +under the new project governance model. -More information is available at http://redis.io +Redis 6.2 includes many new commands and improvements, but no big features. It +mainly makes Redis more complete and addresses issues that have been requested +by many users frequently or for a long time. -Happy hacking! +Many of these changes were not eligible for 6.0.x for several reasons: + +1. They are not backward compatible, which is always the case with new or + extended commands (that cannot be replicated to an older replica). +2. They require a longer release-candidate test cycle. + + +Here is a comprehensive list of changes in this release compared to 6.0.9, +each one includes the PR number that added it, so you can get more details +at https://github.com/redis/redis/pull/ + +New commands / args: +* Add SMISMEMBER command that checks multiple members (#7615) +* Add ZMSCORE command that returns an array of scores (#7593) +* Add LMOVE and BLMOVE commands that pop and push arbitrarily (#6929) +* Add RESET command that resets client connection state(#7982) +* Add COPY command that copies keys (#7953) +* Add ZDIFF and ZDIFFSTORE commands (#7961) +* Add ZINTER and ZUNION commands (#7794) +* Add GEOSEARCH/GEOSEARCHSTORE commands for bounding box spatial queries (#8094) +* Add GET parameter to SET command, for more powerful GETSET (#7852) +* Add exclusive range query to XPENDING (#8130) +* Add exclusive range query to X[REV]RANGE (#8072) +* Add GT and LT options to ZADD for conditional score updates (#7818) +* Add CLIENT INFO and CLIENT LIST for specific ids (#8113) +* Add IDLE argument to XPENDING command (#7972) +* Add local address to CLIENT LIST, and a CLIENT KILL filter. (#7913) +* Add NOMKSTREAM option to XADD command (#7910) +* Add command introspection to Sentinel (#7940) +* Add SENTINEL MYID subcommand (#7858) + +New features: +* Dump payload sanitization: prevent corrupt payload causing crashes (#7807) + Has flags to enable full O(N) validation (disabled by default). +* ACL patterns for Pub/Sub channels (#7993) +* Support ACL for Sentinel mode (#7888) +* Support getting configuration from both stdin and file at the same time (#7893) + Lets you avoid storing secrets on the disk. + +New features in CLI tools: +* redis-cli RESP3 push support (#7609) +* redis-cli cluster import support source and target that require auth (#7994) +* redis-cli URIs able to provide user name in addition to password (#8048) +* redis-cli/redis-benchmark allow specifying the prefered ciphers/ciphersuites (#8005) +* redis-cli add -e option to exit with code when command execution fails (#8136) + +Command behavior changes: +* EXISTS should not alter LRU (#8016) + In Redis 5.0 and 6.0 it would have touched the LRU/LFU of the key. +* OBJECT should not reveal logically expired keys (#8016) + Will now behave the same TYPE or any other non-DEBUG command. +* Improve db id range check for SELECT and MOVE (#8085) + Changes the error message text on a wrong db index. +* Modify AUTH / HELLO error message (#7648) + Changes the error message text when the user isn't found or is disabled. +* BITOPS length limited to proto_max_bulk_len rather than 512MB (#8096) + The limit is now configurable like in SETRANGE, and APPEND. +* GEORADIUS[BYMEMBER] can fail with -OOM if Redis is over the memory limit (#8107) + +Other behavior changes: +* Optionally (default) fail to start if requested bind address is not available (#7936) + If you rely on Redis starting successfully even if one of the bind addresses + is not available, you'll need to tune the new config. +* Limit the main db dictionaries expansion to prevent key eviction (#7954) + In the past big dictionary rehashing could result in massive data eviction. + Now this rehashing is delayed (up to a limit), which can result in performance + loss due to hash collisions. +* CONFIG REWRITE is atomic and safer, but requires write access to the config file's folder (#7824, #8051) + This change was already present in 6.0.9, but was missing from the release + notes. +* A new incremental eviction mechanism that reduces latency on eviction spikes (#7653) + In pathological cases this can cause memory to grow uncontrolled and may require + specific tuning. +* Not resetting "save" config when Redis is started with command line arguments. (#7092) + In case you provide command line arguments without "save" and count on it + being disabled, Now the defaults "save" config will kick in. +* Update memory metrics for INFO during loading (#7690) +* When "supervised" config is enabled, it takes precedence over "daemonize". (#8036) +* Assertion and panic, print crash log without generating SIGSEGV (#7585) +* Added crash log report on SIGABRT, instead of silently exiting (#8004) +* Disable THP (Transparent Huge Pages) if enabled (#7381) + If you deliberately enabled it, you'll need to config Redis to keep it. + +Bug fixes: +* Handle output buffer limits for module blocked clients (#8141) + Could result in a module sending reply to a blocked client to go beyond the + limit. +* Fix setproctitle related crashes. (#8150, #8088) + Caused various crashes on startup, mainly on Apple M1 chips or under + instrumentation. +* A module doing RM_Call could cause replicas to get nested MULTI (#8097). +* Backup/restore cluster mode keys to slots map for repl-diskless-load=swapdb (#8108) + In cluster mode with repl-diskless-load, when loading failed, slot map + wouldn't have been restored. +* Fix oom-score-adj-values range, and bug when used in config file (#8046) + Enabling setting this in the config file in a line after enabling it, would + have been buggy. +* Reset average ttl when empty databases (#8106) + Just causing misleading metric in INFO +* Disable rehash when Redis has child process (#8007) + This could have caused excessive CoW during BGSAVE, replication or AOFRW. +* Further improved ACL algorithm for picking categories (#7966) + Output of ACL GETUSER is now more similar to the one provided by ACL SETUSER. +* Fix bug with module GIL being released prematurely (#8061) + Could in theory (and rarely) cause multi-threaded modules to corrupt memory. +* Fix cluster redirect for module command with no firstkey. (#7539) +* Reduce effect of client tracking causing feedback loop in key eviction (#8100) +* Kill disk-based fork child when all replicas drop and 'save' is not enabled (#7819) +* Rewritten commands (modified for propagation) are logged as their original command (#8006) +* Fix cluster access to unaligned memory (SIGBUS on old ARM) #7958 +* If diskless repl child is killed, make sure to reap the child pid (#7742) +* Broadcast a PONG message when slot's migration is over, may reduce MOVED responses (#7571) + +Other improvements: +* TLS Support in redis-benchmark (#7959) +* Accelerate diskless master connections, and general re-connections (#6271) +* Run active defrag while blocked / loading (#7726) +* Performance and memory reporting improvement - sds take control of its internal fragmentation (#7875) +* Speedup cluster failover. (#7948) + +Platform / toolchain support related improvements: +* Optionally (not by default) use H/W Monotonic clock for faster time sampling (#7644) +* Remove the requirements for C11 and _Atomic supporting compiler (#7707) + This would allow to more easily build and use Redis on older systems and + compilers again. +* Fix crash log registers output on ARM. (#8020) +* Raspberry build fix. (#8095) +* Setting process title support for Haiku. (#8060) +* DragonFlyBSD RSS memory sampling support. (#8023) + +New configuration options: +* Enable configuring OpenSSL using the standard openssl.cnf (#8143) +* oom-score-adj-values can config can now take absolute values (besides relative ones) (#8046) +* TLS: Add different client cert support. (#8076) +* Note that a few other changes listed above added their config options. + +Info fields and introspection changes: +* Add INFO fields to track diskless and disk-based replication progress (#7981) +* Add INFO field for main thread cpu time, and scrape system time. (#8132) +* Add total_forks to INFO STATS (#8155) +* Add maxclients and cluster_connections to INFO CLIENTS (#7979) +* Add tracking bcast flag and client redirection in client list (#7995) +* Fixed INFO client_recent_max_input_buffer includes argv array (#8065, see #7874) +* Note that a few other changes listed above added their info fields. + +Module API changes: +* Add CTX_FLAGS_DENY_BLOCKING as a unified the way to know if blocking is allowed (#8025) +* Add data type callbacks for lazy free effort, and unlink (#7912) +* Add data type callback for COPY command (#8112) +* Add callbacks for defrag support. (#8149) +* Add module event for repl-diskless-load swapdb (#8153) + +Module related fixes: +* Moved RMAPI_FUNC_SUPPORTED so that it's usable (#8037) +* Improve timer accuracy (#7987) +* Allow '\0' inside of result of RM_CreateStringPrintf (#6260) + + +Thanks to all the users and developers who made this release possible. +We'll follow up with more RC releases, until the code looks production ready +and we don't get reports of serious issues for a while. + +A special thank you for the amount of work put into this release by: +- Wang Yuan +- Felipe Machado +- Filipe Oliveira +- Tatsuya Arisawa +- Yang Bodong +- Jim Brunner +- Wen Hui +- Guy Benoish +- Chen Yang +- Nitai Caro +- Meir Shpilraien +- Madelyn Olson +- maohuazhu +- Valentino Geron +- Tyson Andre +- Michael Grunder +- alexronke-channeladvisor +- sundb +- WuYunlong +- Yoav Steinberg +- Uri Shachar +- Nykolas Laurentino de Lima +- David CARLIER + + +Migrating from 6.0 to 6.2 +========================= + +Redis 6.2 is mostly a strict superset of 6.0, you should not have any problem +upgrading your application from 6.0 to 6.2. However there are some small changes +of behavior listed above, please make sure you are not badly affected by any of +them. + +Specifically these sections: +* Command behavior changes +* Other behavior changes + +-------------------------------------------------------------------------------- + +Cheers, +The Redis team diff --git a/src/help.h b/src/help.h index 8a12458e1..d6754f570 100644 --- a/src/help.h +++ b/src/help.h @@ -1,4 +1,4 @@ -/* Automatically generated by generate-command-help.rb, do not edit. */ +/* Automatically generated by ./utils/generate-command-help.rb, do not edit. */ #ifndef __REDIS_HELP_H #define __REDIS_HELP_H @@ -94,7 +94,7 @@ struct commandHelp { 1, "2.0.0" }, { "AUTH", - "password", + "[username] password", "Authenticate to the server", 8, "1.0.0" }, @@ -128,6 +128,11 @@ struct commandHelp { "Find first bit set or clear in a string", 1, "2.8.7" }, + { "BLMOVE", + "source destination LEFT|RIGHT LEFT|RIGHT timeout", + "Pop an element from a list, push it to another list and return it; or block until one is available", + 2, + "6.2.0" }, { "BLPOP", "key [key ...] timeout", "Remove and get the first element in a list, or block until one is available", @@ -173,13 +178,18 @@ struct commandHelp { "Returns the client ID for the current connection", 8, "5.0.0" }, + { "CLIENT INFO", + "-", + "Returns information about the current client connection.", + 8, + "6.2.0" }, { "CLIENT KILL", "[ip:port] [ID client-id] [TYPE normal|master|slave|pubsub] [USER username] [ADDR ip:port] [SKIPME yes/no]", "Kill the connection of a client", 8, "2.4.0" }, { "CLIENT LIST", - "[TYPE normal|master|replica|pubsub]", + "[TYPE normal|master|replica|pubsub] [ID client-id [client-id ...]]", "Get the list of client connections", 8, "2.4.0" }, @@ -358,6 +368,11 @@ struct commandHelp { "Set a configuration parameter to the given value", 9, "2.0.0" }, + { "COPY", + "source destination [DB destination-db] [REPLACE]", + "Copy a key", + 0, + "6.2.0" }, { "DBSIZE", "-", "Return the number of keys in the selected database", @@ -473,6 +488,16 @@ struct commandHelp { "Query a sorted set representing a geospatial index to fetch members matching a given maximum distance from a member", 13, "3.2.0" }, + { "GEOSEARCH", + "key [FROMMEMBER member] [FROMLONLAT longitude latitude] [BYRADIUS radius m|km|ft|mi] [BYBOX width height m|km|ft|mi] [ASC|DESC] [COUNT count] [WITHCOORD] [WITHDIST] [WITHHASH]", + "Query a sorted set representing a geospatial index to fetch members inside an area of a box or a circle.", + 13, + "6.2" }, + { "GEOSEARCHSTORE", + "destination source [FROMMEMBER member] [FROMLONLAT longitude latitude] [BYRADIUS radius m|km|ft|mi] [BYBOX width height m|km|ft|mi] [ASC|DESC] [COUNT count] [WITHCOORD] [WITHDIST] [WITHHASH] [STOREDIST]", + "Query a sorted set representing a geospatial index to fetch members inside an area of a box or a circle, and store the result in another key.", + 13, + "6.2" }, { "GET", "key", "Get the value of a key", @@ -648,6 +673,11 @@ struct commandHelp { "Get the length of a list", 2, "1.0.0" }, + { "LMOVE", + "source destination LEFT|RIGHT LEFT|RIGHT", + "Pop an element from a list, push it to another list and return it", + 2, + "6.2.0" }, { "LOLWUT", "[VERSION version]", "Display some computer art and the Redis version", @@ -659,7 +689,7 @@ struct commandHelp { 2, "1.0.0" }, { "LPOS", - "key element [FIRST rank] [COUNT num-matches] [MAXLEN len]", + "key element [RANK rank] [COUNT num-matches] [MAXLEN len]", "Return the index of matching elements on a list", 2, "6.0.6" }, @@ -729,7 +759,7 @@ struct commandHelp { 1, "1.0.0" }, { "MIGRATE", - "host port key|"" destination-db timeout [COPY] [REPLACE] [AUTH password] [KEYS key]", + "host port key|"" destination-db timeout [COPY] [REPLACE] [AUTH password] [AUTH2 username password] [KEYS key]", "Atomically transfer a key from a Redis instance to another one.", 0, "2.6.0" }, @@ -883,6 +913,11 @@ struct commandHelp { "Make the server a replica of another instance, or promote it as master.", 9, "5.0.0" }, + { "RESET", + "-", + "Reset the connection", + 8, + "6.2" }, { "RESTORE", "key ttl serialized-value [REPLACE] [ABSTTL] [IDLETIME seconds] [FREQ frequency]", "Create a key using the provided serialized value, previously obtained using DUMP.", @@ -974,7 +1009,7 @@ struct commandHelp { 8, "1.0.0" }, { "SET", - "key value [EX seconds|PX milliseconds] [NX|XX] [KEEPTTL]", + "key value [EX seconds|PX milliseconds|KEEPTTL] [NX|XX] [GET]", "Set the string value of a key", 1, "1.0.0" }, @@ -1033,6 +1068,11 @@ struct commandHelp { "Get all the members in a set", 3, "1.0.0" }, + { "SMISMEMBER", + "key member [member ...]", + "Returns the membership associated with the given elements for a set", + 3, + "6.2.0" }, { "SMOVE", "source destination member", "Move a member from one set to another", @@ -1149,7 +1189,7 @@ struct commandHelp { 14, "5.0.0" }, { "XADD", - "key ID field value [field value ...]", + "key [MAXLEN [=|~] length] [NOMKSTREAM] *|ID field value [field value ...]", "Appends a new entry to a stream", 14, "5.0.0" }, @@ -1164,7 +1204,7 @@ struct commandHelp { 14, "5.0.0" }, { "XGROUP", - "[CREATE key groupname id-or-$] [SETID key groupname id-or-$] [DESTROY key groupname] [DELCONSUMER key groupname consumername]", + "[CREATE key groupname ID|$ [MKSTREAM]] [SETID key groupname ID|$] [DESTROY key groupname] [CREATECONSUMER key groupname consumername] [DELCONSUMER key groupname consumername]", "Create, destroy, and manage consumer groups.", 14, "5.0.0" }, @@ -1179,7 +1219,7 @@ struct commandHelp { 14, "5.0.0" }, { "XPENDING", - "key group [start end count] [consumer]", + "key group [[IDLE min-idle-time] start end count [consumer]]", "Return information and entries from a stream consumer group pending entries list, that are messages fetched but never acknowledged.", 14, "5.0.0" }, @@ -1189,7 +1229,7 @@ struct commandHelp { 14, "5.0.0" }, { "XREAD", - "[COUNT count] [BLOCK milliseconds] STREAMS key [key ...] id [id ...]", + "[COUNT count] [BLOCK milliseconds] STREAMS key [key ...] ID [ID ...]", "Return never seen elements in multiple streams, with IDs greater than the ones reported by the caller for each stream. Can block.", 14, "5.0.0" }, @@ -1204,12 +1244,12 @@ struct commandHelp { 14, "5.0.0" }, { "XTRIM", - "key MAXLEN [~] count", + "key MAXLEN [=|~] length", "Trims the stream to (approximately if '~' is passed) a certain size", 14, "5.0.0" }, { "ZADD", - "key [NX|XX] [CH] [INCR] score member [score member ...]", + "key [NX|XX] [GT|LT] [CH] [INCR] score member [score member ...]", "Add one or more members to a sorted set, or update its score if it already exists", 4, "1.2.0" }, @@ -1223,11 +1263,26 @@ struct commandHelp { "Count the members in a sorted set with scores within the given values", 4, "2.0.0" }, + { "ZDIFF", + "numkeys key [key ...] [WITHSCORES]", + "Subtract multiple sorted sets", + 4, + "6.2.0" }, + { "ZDIFFSTORE", + "destination numkeys key [key ...]", + "Subtract multiple sorted sets and store the resulting sorted set in a new key", + 4, + "6.2.0" }, { "ZINCRBY", "key increment member", "Increment the score of a member in a sorted set", 4, "1.2.0" }, + { "ZINTER", + "numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX] [WITHSCORES]", + "Intersect multiple sorted sets", + 4, + "6.2.0" }, { "ZINTERSTORE", "destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]", "Intersect multiple sorted sets and store the resulting sorted set in a new key", @@ -1238,6 +1293,11 @@ struct commandHelp { "Count the number of members in a sorted set between a given lexicographical range", 4, "2.8.9" }, + { "ZMSCORE", + "key member [member ...]", + "Get the score associated with the given members in a sorted set", + 4, + "6.2.0" }, { "ZPOPMAX", "key [count]", "Remove and return members with the highest scores in a sorted set", @@ -1318,6 +1378,11 @@ struct commandHelp { "Get the score associated with the given member in a sorted set", 4, "1.2.0" }, + { "ZUNION", + "numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX] [WITHSCORES]", + "Add multiple sorted sets", + 4, + "6.2.0" }, { "ZUNIONSTORE", "destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]", "Add multiple sorted sets and store the resulting sorted set in a new key", diff --git a/src/version.h b/src/version.h index 89aef53fc..26505bfcb 100644 --- a/src/version.h +++ b/src/version.h @@ -1,2 +1,2 @@ -#define REDIS_VERSION "255.255.255" -#define REDIS_VERSION_NUM 0x00ffffff +#define REDIS_VERSION "6.1.240" +#define REDIS_VERSION_NUM 0x000601f0 -- cgit v1.2.1