summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOran Agra <oran@redislabs.com>2020-12-14 20:54:10 +0200
committerGitHub <noreply@github.com>2020-12-14 20:54:10 +0200
commitb8c67ce41b51247c02a639929e4fab20189afa1e (patch)
tree6c72822346bdbb5021912cffb176953eb7bb2c7e
parent9acd40d97b00aefeae1ae8f523cd9b0adde80d81 (diff)
downloadredis-b8c67ce41b51247c02a639929e4fab20189afa1e.tar.gz
Redis 6.2 RC1.6.2-rc1
-rw-r--r--00-RELEASENOTES226
-rw-r--r--src/help.h89
-rw-r--r--src/version.h4
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/<number>
+
+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