Redis 6.2 RC1.

This commit is contained in:
Oran Agra 2020-12-14 20:54:10 +02:00 committed by GitHub
parent 9acd40d97b
commit b8c67ce41b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 294 additions and 25 deletions

View File

@ -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 Upgrade urgency LOW: This is the first RC of Redis 6.2.
every time there is a partial feature freeze in order to eventually create
a new stable release.
Usually "unstable" is stable enough for you to use it in development environments Introduction to the Redis 6.2 release
however you should never use it in production environments. It is possible =====================================
to download the latest stable release here:
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

View File

@ -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 #ifndef __REDIS_HELP_H
#define __REDIS_HELP_H #define __REDIS_HELP_H
@ -94,7 +94,7 @@ struct commandHelp {
1, 1,
"2.0.0" }, "2.0.0" },
{ "AUTH", { "AUTH",
"password", "[username] password",
"Authenticate to the server", "Authenticate to the server",
8, 8,
"1.0.0" }, "1.0.0" },
@ -128,6 +128,11 @@ struct commandHelp {
"Find first bit set or clear in a string", "Find first bit set or clear in a string",
1, 1,
"2.8.7" }, "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", { "BLPOP",
"key [key ...] timeout", "key [key ...] timeout",
"Remove and get the first element in a list, or block until one is available", "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", "Returns the client ID for the current connection",
8, 8,
"5.0.0" }, "5.0.0" },
{ "CLIENT INFO",
"-",
"Returns information about the current client connection.",
8,
"6.2.0" },
{ "CLIENT KILL", { "CLIENT KILL",
"[ip:port] [ID client-id] [TYPE normal|master|slave|pubsub] [USER username] [ADDR ip:port] [SKIPME yes/no]", "[ip:port] [ID client-id] [TYPE normal|master|slave|pubsub] [USER username] [ADDR ip:port] [SKIPME yes/no]",
"Kill the connection of a client", "Kill the connection of a client",
8, 8,
"2.4.0" }, "2.4.0" },
{ "CLIENT LIST", { "CLIENT LIST",
"[TYPE normal|master|replica|pubsub]", "[TYPE normal|master|replica|pubsub] [ID client-id [client-id ...]]",
"Get the list of client connections", "Get the list of client connections",
8, 8,
"2.4.0" }, "2.4.0" },
@ -358,6 +368,11 @@ struct commandHelp {
"Set a configuration parameter to the given value", "Set a configuration parameter to the given value",
9, 9,
"2.0.0" }, "2.0.0" },
{ "COPY",
"source destination [DB destination-db] [REPLACE]",
"Copy a key",
0,
"6.2.0" },
{ "DBSIZE", { "DBSIZE",
"-", "-",
"Return the number of keys in the selected database", "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", "Query a sorted set representing a geospatial index to fetch members matching a given maximum distance from a member",
13, 13,
"3.2.0" }, "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", { "GET",
"key", "key",
"Get the value of a key", "Get the value of a key",
@ -648,6 +673,11 @@ struct commandHelp {
"Get the length of a list", "Get the length of a list",
2, 2,
"1.0.0" }, "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", { "LOLWUT",
"[VERSION version]", "[VERSION version]",
"Display some computer art and the Redis version", "Display some computer art and the Redis version",
@ -659,7 +689,7 @@ struct commandHelp {
2, 2,
"1.0.0" }, "1.0.0" },
{ "LPOS", { "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", "Return the index of matching elements on a list",
2, 2,
"6.0.6" }, "6.0.6" },
@ -729,7 +759,7 @@ struct commandHelp {
1, 1,
"1.0.0" }, "1.0.0" },
{ "MIGRATE", { "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.", "Atomically transfer a key from a Redis instance to another one.",
0, 0,
"2.6.0" }, "2.6.0" },
@ -883,6 +913,11 @@ struct commandHelp {
"Make the server a replica of another instance, or promote it as master.", "Make the server a replica of another instance, or promote it as master.",
9, 9,
"5.0.0" }, "5.0.0" },
{ "RESET",
"-",
"Reset the connection",
8,
"6.2" },
{ "RESTORE", { "RESTORE",
"key ttl serialized-value [REPLACE] [ABSTTL] [IDLETIME seconds] [FREQ frequency]", "key ttl serialized-value [REPLACE] [ABSTTL] [IDLETIME seconds] [FREQ frequency]",
"Create a key using the provided serialized value, previously obtained using DUMP.", "Create a key using the provided serialized value, previously obtained using DUMP.",
@ -974,7 +1009,7 @@ struct commandHelp {
8, 8,
"1.0.0" }, "1.0.0" },
{ "SET", { "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", "Set the string value of a key",
1, 1,
"1.0.0" }, "1.0.0" },
@ -1033,6 +1068,11 @@ struct commandHelp {
"Get all the members in a set", "Get all the members in a set",
3, 3,
"1.0.0" }, "1.0.0" },
{ "SMISMEMBER",
"key member [member ...]",
"Returns the membership associated with the given elements for a set",
3,
"6.2.0" },
{ "SMOVE", { "SMOVE",
"source destination member", "source destination member",
"Move a member from one set to another", "Move a member from one set to another",
@ -1149,7 +1189,7 @@ struct commandHelp {
14, 14,
"5.0.0" }, "5.0.0" },
{ "XADD", { "XADD",
"key ID field value [field value ...]", "key [MAXLEN [=|~] length] [NOMKSTREAM] *|ID field value [field value ...]",
"Appends a new entry to a stream", "Appends a new entry to a stream",
14, 14,
"5.0.0" }, "5.0.0" },
@ -1164,7 +1204,7 @@ struct commandHelp {
14, 14,
"5.0.0" }, "5.0.0" },
{ "XGROUP", { "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.", "Create, destroy, and manage consumer groups.",
14, 14,
"5.0.0" }, "5.0.0" },
@ -1179,7 +1219,7 @@ struct commandHelp {
14, 14,
"5.0.0" }, "5.0.0" },
{ "XPENDING", { "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.", "Return information and entries from a stream consumer group pending entries list, that are messages fetched but never acknowledged.",
14, 14,
"5.0.0" }, "5.0.0" },
@ -1189,7 +1229,7 @@ struct commandHelp {
14, 14,
"5.0.0" }, "5.0.0" },
{ "XREAD", { "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.", "Return never seen elements in multiple streams, with IDs greater than the ones reported by the caller for each stream. Can block.",
14, 14,
"5.0.0" }, "5.0.0" },
@ -1204,12 +1244,12 @@ struct commandHelp {
14, 14,
"5.0.0" }, "5.0.0" },
{ "XTRIM", { "XTRIM",
"key MAXLEN [~] count", "key MAXLEN [=|~] length",
"Trims the stream to (approximately if '~' is passed) a certain size", "Trims the stream to (approximately if '~' is passed) a certain size",
14, 14,
"5.0.0" }, "5.0.0" },
{ "ZADD", { "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", "Add one or more members to a sorted set, or update its score if it already exists",
4, 4,
"1.2.0" }, "1.2.0" },
@ -1223,11 +1263,26 @@ struct commandHelp {
"Count the members in a sorted set with scores within the given values", "Count the members in a sorted set with scores within the given values",
4, 4,
"2.0.0" }, "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", { "ZINCRBY",
"key increment member", "key increment member",
"Increment the score of a member in a sorted set", "Increment the score of a member in a sorted set",
4, 4,
"1.2.0" }, "1.2.0" },
{ "ZINTER",
"numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX] [WITHSCORES]",
"Intersect multiple sorted sets",
4,
"6.2.0" },
{ "ZINTERSTORE", { "ZINTERSTORE",
"destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]", "destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]",
"Intersect multiple sorted sets and store the resulting sorted set in a new key", "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", "Count the number of members in a sorted set between a given lexicographical range",
4, 4,
"2.8.9" }, "2.8.9" },
{ "ZMSCORE",
"key member [member ...]",
"Get the score associated with the given members in a sorted set",
4,
"6.2.0" },
{ "ZPOPMAX", { "ZPOPMAX",
"key [count]", "key [count]",
"Remove and return members with the highest scores in a sorted set", "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", "Get the score associated with the given member in a sorted set",
4, 4,
"1.2.0" }, "1.2.0" },
{ "ZUNION",
"numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX] [WITHSCORES]",
"Add multiple sorted sets",
4,
"6.2.0" },
{ "ZUNIONSTORE", { "ZUNIONSTORE",
"destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]", "destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]",
"Add multiple sorted sets and store the resulting sorted set in a new key", "Add multiple sorted sets and store the resulting sorted set in a new key",

View File

@ -1,2 +1,2 @@
#define REDIS_VERSION "255.255.255" #define REDIS_VERSION "6.1.240"
#define REDIS_VERSION_NUM 0x00ffffff #define REDIS_VERSION_NUM 0x000601f0