Redis 5.0 release notes
=======================

--------------------------------------------------------------------------------
Upgrade urgency levels:

LOW:      No need to upgrade unless there are new features you want to use.
MODERATE: Program an upgrade of the server, but it's not urgent.
HIGH:     There is a critical bug that may affect a subset of users. Upgrade!
CRITICAL: There is a critical bug affecting MOST USERS. Upgrade ASAP.
SECURITY: There are security fixes in the release.
--------------------------------------------------------------------------------

================================================================================
Redis 5.0.14 Released Mon Oct 4 12:00:00 IDT 2021
================================================================================

Upgrade urgency: SECURITY, contains fixes to security issues.

Security Fixes:
* (CVE-2021-41099) Integer to heap buffer overflow handling certain string
  commands and network payloads, when proto-max-bulk-len is manually configured
  to a non-default, very large value [reported by yiyuaner].
* (CVE-2021-32762) Integer to heap buffer overflow issue in redis-cli and
  redis-sentinel parsing large multi-bulk replies on some older and less common
  platforms [reported by Microsoft Vulnerability Research].
* (CVE-2021-32687) Integer to heap buffer overflow with intsets, when
  set-max-intset-entries is manually configured to a non-default, very large
  value [reported by Pawel Wieczorkiewicz, AWS].
* (CVE-2021-32675) Denial Of Service when processing RESP request payloads with
  a large number of elements on many connections.
* (CVE-2021-32672) Random heap reading issue with Lua Debugger [reported by
  Meir Shpilraien].
* (CVE-2021-32628) Integer to heap buffer overflow handling ziplist-encoded
  data types, when configuring a large, non-default value for
  hash-max-ziplist-entries, hash-max-ziplist-value, zset-max-ziplist-entries
  or zset-max-ziplist-value [reported by sundb].
* (CVE-2021-32627) Integer to heap buffer overflow issue with streams, when
  configuring a non-default, large value for proto-max-bulk-len and
  client-query-buffer-limit [reported by sundb].
* (CVE-2021-32626) Specially crafted Lua scripts may result with Heap buffer
  overflow [reported by Meir Shpilraien].

================================================================================
Redis 5.0.13 Released Wed Jul 21 16:32:19 IDT 2021
================================================================================

Upgrade urgency: SECURITY, contains fixes to security issues that affect
authenticated client connections on 32-bit versions. MODERATE otherwise.

Fix integer overflow in BITFIELD on 32-bit versions (CVE-2021-32761).
An integer overflow bug in Redis version 2.2 or newer can be exploited using the
BITFIELD command to corrupt the heap and potentially result with remote code
execution.

Bug fixes:
* Fix overflows on 32-bit versions in GETBIT, SETBIT, BITCOUNT, BITPOS, and BITFIELD (#9191)
* Fix ziplist length updates on big-endian platforms (#2080)

================================================================================
Redis 5.0.12     Released Mon Mar  1 17:29:52 IST 2021
================================================================================

Upgrade urgency: LOW, fixes a compilation issue.

Bug fixes:
* Fix compilation error on non-glibc systems if jemalloc is not used (#8533)

================================================================================
Redis 5.0.11     Released Mon Feb 22 16:48:25 IST 2021
================================================================================

Upgrade urgency: SECURITY if you use 32bit build of redis (see bellow), LOW
otherwise.

Integer overflow on 32-bit systems (CVE-2021-21309):
Redis 4.0 or newer uses a configurable limit for the maximum supported bulk
input size. By default, it is 512MB which is a safe value for all platforms.
If the limit is significantly increased, receiving a large request from a client
may trigger several integer overflow scenarios, which would result with buffer
overflow and heap corruption.

Bug fixes:
* Avoid 32-bit overflows when proto-max-bulk-len is set high (#8522)
* Fix an issue where a forked process deletes the parent's pidfile (#8231)
* Fix flock cluster config may cause failure to restart after kill -9 (#7674)
* Avoid an out-of-bounds read in the redis-sentinel (#7443)

Platform and deployment-related changes:
* Fix setproctitle related crashes. (#8150, #8088)
  Caused various crashes on startup, mainly on Apple M1 chips or under
  instrumentation.
* Add a check for an ARM64 Linux kernel bug (#8224)
  Due to the potential severity of this issue, Redis will refuse to run on
  affected platforms by default.

Modules:
* RM_ZsetRem: Delete key if empty, the bug could leave empty zset keys (#8453)

================================================================================
Redis 5.0.10     Released Mon Oct 26 09:21:49 IST 2020
================================================================================

Upgrade urgency: SECURITY if you use an affected platform (see below).
                 Otherwise the upgrade urgency is MODERATE.

This release fixes a potential heap overflow when using a heap allocator other
than jemalloc or glibc's malloc. See:
https://github.com/redis/redis/pull/7963

Other fixes in this release:

* Avoid case of Lua scripts being consistently aborted due to OOM
* XPENDING will not update consumer's seen-time
* A blocked XREADGROUP didn't propagated the XSETID to replicas / AOF
* UNLINK support for streams
* RESTORE ABSTTL won't store expired keys into the DB
* Hide AUTH from MONITOR
* Cluster: reduce spurious PFAIL/FAIL states upon delayed PONG receival
* Cluster: Fix case of clusters mixing accidentally by gossip
* Cluster: Allow blocked XREAD on a cluster replica
* Cluster: Optimize memory usage CLUSTER SLOTS command
* RedisModule_ValueLength support for stream data type
* Minor fixes in redis-check-rdb and redis-cli
* Fix redis-check-rdb support for modules aux data
* Add fsync in replica when full RDB payload was received

Full list of commits:

Yossi Gottlieb in commit ce0d74d8f:
 Fix wrong zmalloc_size() assumption. (#7963)
 1 file changed, 3 deletions(-)

Yossi Gottlieb in commit 066699240:
 Backport Lua 5.2.2 stack overflow fix. (#7733)
 1 file changed, 1 insertion(+), 1 deletion(-)

WuYunlong in commit 8a90c7ef3:
 Add fsync to readSyncBulkPayload(). (#7839)
 1 file changed, 11 insertions(+)

Ariel Shtul in commit f0df2bb3c:
 Fix redis-check-rdb support for modules aux data (#7826)
 3 files changed, 21 insertions(+), 1 deletion(-)

hwware in commit 7add2a412:
 fix memory leak in sentinel connection sharing
 1 file changed, 1 insertion(+)

Oran Agra in commit 315e648f8:
 Allow blocked XREAD on a cluster replica (#7881)
 3 files changed, 100 insertions(+), 2 deletions(-)

guybe7 in commit 4967ee94e:
 Modules: Invalidate saved_oparray after use (#7688)
 1 file changed, 2 insertions(+)

antirez in commit 065003e8f:
 Modules: remove spurious call from moduleHandleBlockedClients().
 1 file changed, 1 deletion(-)

Angus Pearson in commit 6cdf62928:
 Fix broken interval and repeat bahaviour in redis-cli (incluing cluster mode)
 1 file changed, 11 insertions(+), 6 deletions(-)

antirez in commit cb6a4971c:
 Cluster: introduce data_received field.
 2 files changed, 27 insertions(+), 10 deletions(-)

Madelyn Olson in commit 83f4de865:
 Hide AUTH from monitor
 1 file changed, 1 insertion(+), 1 deletion(-)

Guy Benoish in commit 3ba08d185:
 Support streams in general module API functions
 3 files changed, 11 insertions(+), 1 deletion(-)

Itamar Haber in commit 109c0635c:
 Expands lazyfree's effort estimate to include Streams (#5794)
 1 file changed, 24 insertions(+)

huangzhw in commit 235210d5b:
 defrag.c activeDefragSdsListAndDict when defrag sdsele, We can't use (#7492)
 1 file changed, 1 insertion(+), 1 deletion(-)

Oran Agra in commit fdd3162fe:
 RESTORE ABSTTL skip expired keys - leak (#7511)
 1 file changed, 1 insertion(+)

Oran Agra in commit 6139d6d18:
 RESTORE ABSTTL won't store expired keys into the db (#7472)
 4 files changed, 45 insertions(+), 15 deletions(-)

Liu Zhen in commit 0f502c58d:
 fix clusters mixing accidentally by gossip
 1 file changed, 10 insertions(+), 2 deletions(-)

Guy Benoish in commit 37fd50718:
 XPENDING should not update consumer's seen-time
 4 files changed, 30 insertions(+), 18 deletions(-)

antirez in commit a3ca53e4a:
 Also use propagate() in streamPropagateGroupID().
 1 file changed, 11 insertions(+), 1 deletion(-)

yanhui13 in commit 7a62eb96e:
 optimize the output of cluster slots
 1 file changed, 7 insertions(+), 4 deletions(-)

srzhao in commit 0efb93d0c:
 Check OOM at script start to get stable lua OOM state.
 3 files changed, 11 insertions(+), 4 deletions(-)

================================================================================
Redis 5.0.9     Released Thu Apr 17 12:41:00 CET 2020
================================================================================

Upgrade urgency:CRITICAL if you use Streams with AOF ore replicas.
                Otherwise the upgrade urgency is LOW.

This release has a speed improvement and a critical fix:

    * FIX: XREADGROUP when fetching data in a blocking way, would not
           emit the XCLAIM in the AOF file and to replicas. This means
           that the last ID is not updated, and that restarting the server
           will have the effect of reprocessing some entries.
    * NEW: Clients blocked on the same key are now unblocked on
           O(1) time. Backported from Redis 6.

Commits:

    1fc8ef81a Fix XCLAIM propagation in AOF/replicas for blocking XREADGROUP.
    a5e24eabc Speedup: unblock clients on keys in O(1).

================================================================================
Redis 5.0.8     Released Thu Mar 12 16:05:41 CET 2020
================================================================================

Upgrade urgency HIGH: This release fixes security issues.

This is a list of fixes in this release:

Salvatore Sanfilippo in commit 2bea502d:
 Merge pull request #6975 from dustinmm80/add-arm-latomic-linking
Dustin Collins in commit b5931405:
 Fix Pi building needing -latomic, backport
 1 file changed, 9 insertions(+)

srzhao in commit fd441300:
 fix impl of aof-child whitelist SIGUSR1 feature.
 1 file changed, 5 insertions(+), 4 deletions(-)

Ariel in commit 77ff332b:
 fix ThreadSafeContext lock/unlock function names
 1 file changed, 2 insertions(+), 2 deletions(-)

Guy Benoish in commit 4f0f799c:
 XREADGROUP should propagate XCALIM/SETID in MULTI/EXEC
 1 file changed, 2 insertions(+), 2 deletions(-)

Oran Agra in commit 0c1273c3:
 Fix client flags to be int64 in module.c
 1 file changed, 3 insertions(+), 3 deletions(-)

Guy Benoish in commit 708a4e8a:
 Fix small bugs related to replica and monitor ambiguity
 2 files changed, 8 insertions(+), 6 deletions(-)

WuYunlong in commit eac4115d:
 Fix lua related memory leak.
 1 file changed, 1 insertion(+)

antirez in commit d075df17:
 Simplify #6379 changes.
 2 files changed, 4 insertions(+), 9 deletions(-)

WuYunlong in commit 80a49c37:
 Free allocated sds in pfdebugCommand() to avoid memory leak.
 1 file changed, 1 insertion(+)

antirez in commit 60870d3a:
 Jump to right label on AOF parsing error.
 1 file changed, 6 insertions(+), 4 deletions(-)

antirez in commit d90f599b:
 Free fakeclient argv on AOF error.
 1 file changed, 11 insertions(+), 3 deletions(-)

WuYunlong in commit 8ee3bddf:
 Fix potential memory leak of rioWriteBulkStreamID().
 1 file changed, 4 insertions(+), 1 deletion(-)

WuYunlong in commit 4780fe78:
 Fix potential memory leak of clusterLoadConfig().
 1 file changed, 20 insertions(+), 5 deletions(-)

Leo Murillo in commit f3b77510:
 Fix bug on KEYS command where pattern starts with * followed by \x00 (null char).
 1 file changed, 1 insertion(+), 1 deletion(-)

Guy Benoish in commit 7f3fcedb:
 Blocking XREAD[GROUP] should always reply with valid data (or timeout)
 3 files changed, 44 insertions(+), 10 deletions(-)

antirez in commit f93b2fa5:
 XCLAIM: Create the consumer only on successful claims.
 1 file changed, 4 insertions(+), 2 deletions(-)

Guy Benoish in commit 89682d96:
 Stream: Handle streamID-related edge cases
 4 files changed, 54 insertions(+), 4 deletions(-)

antirez in commit 920e108f:
 Fix ip and missing mode in RM_GetClusterNodeInfo().
 1 file changed, 5 insertions(+), 2 deletions(-)

antirez in commit 7569b210:
 Inline protocol: handle empty strings well.
 1 file changed, 2 insertions(+), 6 deletions(-)

Khem Raj in commit 3c610b4e:
 Mark extern definition of SDS_NOINIT in sds.h
 1 file changed, 1 insertion(+), 1 deletion(-)

Seunghoon Woo in commit 16b2d07f:
 [FIX] revisit CVE-2015-8080 vulnerability
 1 file changed, 6 insertions(+), 4 deletions(-)

yz1509 in commit 19f33585:
 avoid sentinel changes promoted_slave to be its own replica.
 1 file changed, 1 insertion(+), 1 deletion(-)

================================================================================
Redis 5.0.7     Released Tue Nov 19 17:52:44 CET 2019
================================================================================

Upgrade urgency HIGH: many issues fixed, some may have an impact.

Hi all, Redis 5.0.7 fixes a number of bugs, none is very critical, however
there are a few that may have an impact. It's a good idea to upgrade.
There are fixes in the area of replication from modules commands and
callbacks, AOF fsync (non critical issue), memory leaks (very rare and small),
streams beahvior (non critical), and a potential crash in commands
processing multiple keys at the same time that is there for years, and happens
very rarely, but is not impossible to trigger.

The following is the list of commits in this release.

antirez in commit 4d2a31ae:
 Test: fix implementation-dependent test after code change.
 1 file changed, 2 insertions(+), 2 deletions(-)

Oran Agra in commit 9f63fc98:
 RED-31295 - redis: avoid race between dlopen and thread creation
 2 files changed, 17 insertions(+)

antirez in commit 1a9e70c1:
 Cluster: fix memory leak of cached master.
 2 files changed, 9 insertions(+), 4 deletions(-)

Guy Benoish in commit 69b1b5be:
 Fix usage of server.stream_node_max_*
 1 file changed, 3 insertions(+), 3 deletions(-)

喜欢兰花山丘 in commit 1fd97ee7:
 Update mkreleasehdr.sh
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit 1a9855d7:
 Remove additional space from comment.
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit 32a6e3e4:
 Fix stream test after addition of 0-0 ID test.
 1 file changed, 3 insertions(+), 3 deletions(-)

Yuan Zhou in commit c9e6cda9:
 aof: fix assignment for aof_fsync_offset
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit d3eeacf9:
 Merge branch '5.0' of github.com:/antirez/redis into 5.0
antirez in commit da5dc458:
 Rename var to fixed_time_expire now that is more general.
 4 files changed, 7 insertions(+), 8 deletions(-)

antirez in commit 0fefed25:
 Fix patch provided in #6554.
 1 file changed, 8 insertions(+), 1 deletion(-)

zhaozhao.zz in commit e9fbc960:
 expires & blocking: handle ready keys as call()
 1 file changed, 5 insertions(+)

Guy Benoish in commit 08ec8f71:
 XADD with ID 0-0 stores an empty key
 2 files changed, 14 insertions(+)

Loris Cro in commit 09e1fe27:
 fix unreported overflow in autogerenared stream IDs
 2 files changed, 19 insertions(+), 10 deletions(-)

Salvatore Sanfilippo in commit 09f9e4b0:
 Merge pull request #6600 from oranagra/5_module_flags
Oran Agra in commit 8d8d68dd:
 module documentation mismatches: loading and fork child for 5.0 branch
 3 files changed, 11 insertions(+)

antirez in commit 7a7fbe70:
 Modules: RM_GetContextFlags(): remove non Redis 5 features.
 1 file changed, 3 deletions(-)

antirez in commit b5830486:
 Modules: fix moduleCreateArgvFromUserFormat() casting bug.
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit b7a2a53a:
 module: fix propagation API bug.
 1 file changed, 2 insertions(+), 2 deletions(-)

antirez in commit 278bd6e3:
 Modules: add new flags to context, replica state + more.
 2 files changed, 48 insertions(+), 1 deletion(-)

antirez in commit 61d9a154:
 Modules: RM_Call(): give pointer to documentation.
 1 file changed, 4 insertions(+), 1 deletion(-)

antirez in commit 0e7ea0aa:
 Modules: RM_Call/Replicate() ability to exclude AOF/replicas.
 1 file changed, 28 insertions(+), 9 deletions(-)

antirez in commit 3b38164e:
 Modules: RM_Replicate() in thread safe contexts.
 1 file changed, 26 insertions(+), 4 deletions(-)

antirez in commit ef9fe9b0:
 Modules: implement RM_Replicate() from async callbacks.
 2 files changed, 33 insertions(+), 2 deletions(-)

antirez in commit 8066d2a1:
 Modules: handle propagation when ctx is freed. Flag modules commands ctx.
 1 file changed, 23 insertions(+), 19 deletions(-)

antirez in commit d3f4dec4:
 Update PR #6537: use a fresh time outside call().
 3 files changed, 27 insertions(+), 7 deletions(-)

antirez in commit 33f42665:
 Update PR #6537 patch to for generality.
 4 files changed, 40 insertions(+), 23 deletions(-)

zhaozhao.zz in commit 68d71d83:
 expires: refactoring judgment about whether a key is expired
 3 files changed, 3 insertions(+), 1 deletion(-)

antirez in commit 62588dbf:
 Modules: fix thread safe context creation crash.
 1 file changed, 1 insertion(+), 1 deletion(-)

================================================================================
Redis 5.0.6     Released Wed Sep 25 12:33:56 CEST 2019
================================================================================

Upgrade urgency CRITICAL: Only in case of exposed instances to untrusted users.

This Redis release, 5.0.6, is a bugfix and enhancement release. The most
important bugfix is a corruption related to the HyperLogLog. A malformed
HyperLogLog string could cause an invalid access to the memory. At a first
glance the vulnerability appears to be not exploitable but just a DoS. The
way to trigger the issue is complex, we'll not provide any information about
how to do that for the users safety.

Other significant changes in this release:

* New modules APIs merged from Redis unstable to Redis 5.
* Some memory optimization related to objects creation.
* Fixes to flushSlaveOutputBuffer() that make sure that SHUTDOWN will
  transfer pending buffers to replicas.

This is the full list of commits:

antirez in commit 7a41047a:
 RDB: fix MODULE_AUX loading by continuing to next opcode.
 1 file changed, 1 insertion(+)

Oran Agra in commit 4eb3028b:
 missing per-skiplist overheads in MEMORY USAGE
 1 file changed, 3 insertions(+), 1 deletion(-)

Oran Agra in commit 5d09f9bc:
 RM_Log - add support for logging without a context or context without module
 1 file changed, 6 insertions(+), 4 deletions(-)

antirez in commit 2810de9f:
 Cluster: abort loading nodes data if vars arguments are unbalanced.
 1 file changed, 1 insertion(+)

antirez in commit f5c63ce0:
 More strict checks and better comments in flushSlaveOutputBuffers().
 1 file changed, 18 insertions(+), 7 deletions(-)

antirez in commit 7f289c3b:
 Improve comment in flushSlavesOutputBuffers().
 1 file changed, 2 insertions(+), 1 deletion(-)

antirez in commit 7ab62d4b:
 Replication: clarify why repl_put_online_on_ack exists at all.
 2 files changed, 34 insertions(+), 10 deletions(-)

zhaozhao.zz in commit 495dd0da:
 networking: flushSlavesOutputBuffers bugfix
 1 file changed, 2 insertions(+), 4 deletions(-)

Salvatore Sanfilippo in commit c1ccf0f1:
 Merge pull request #6366 from oranagra/5.0_rm_reply_cstring
Salvatore Sanfilippo in commit a50dad73:
 Merge pull request #6365 from oranagra/5.0_module_aux
Oran Agra in commit d6294d05:
 RM_ReplyWithCString was missing registration
 1 file changed, 1 insertion(+)

Oran Agra in commit 8c56fc86:
 Fix to module aux data rdb format for backwards compatibility with old check-rdb
 1 file changed, 9 insertions(+), 1 deletion(-)

Oran Agra in commit 98b1314f:
 Implement module api for aux data in rdb
 9 files changed, 431 insertions(+), 18 deletions(-)

antirez in commit 08b03e23:
 redis-cli: always report server errors on read errors.
 1 file changed, 8 insertions(+), 1 deletion(-)

wubostc in commit 239069de:
 Reduce the calling stack
 1 file changed, 2 insertions(+), 3 deletions(-)

antirez in commit 90bf6313:
 Make EMBSTR case of #6261 more obvious.
 1 file changed, 1 insertion(+), 1 deletion(-)

chendianqiang in commit 2f8a0749:
 make memory usage consistent of robj with OBJ_ENCODING_INT
 1 file changed, 9 insertions(+), 4 deletions(-)

antirez in commit 436ed56d:
 HyperLogLog: fix the fix of a corruption bug.
 1 file changed, 1 insertion(+), 2 deletions(-)

John Sully in commit 680f89fb:
 Fix HLL corruption bug
 1 file changed, 1 insertion(+)

swilly22 in commit 388efbf8:
 Extend REDISMODULE_CTX_FLAGS to indicate if redis is currently loading from either RDB or AOF
 2 files changed, 5 insertions(+)

Itamar Haber in commit 0ccbdcee:
 Uses addReplyBulkCString
 1 file changed, 1 insertion(+), 1 deletion(-)

Itamar Haber in commit 707a59c6:
 Adds RedisModule_ReplyWithCString
 2 files changed, 13 insertions(+)

================================================================================
Redis 5.0.5     Released Wed May 15 17:57:41 CEST 2019
================================================================================

Upgrade urgency CRITICAL: This release fixes an important AOF fysnc bug
                          and other less critical issues.


Dear user,

Redis 5.0.5 fixes an important issue with AOF and adds multiple very useful
modules APIs. Moreover smaller bugs in other parts of Redis are fixed in
this release.

The AOF bug
-----------

The AOF bug happens when the fsync policy is set to "everysec", which is the
default: if the write load in the server drops immediately, the commands
executed in the latest second may not be fsync-ed to disk as it should.
This may lead to data loss in case the write load drops immediately and
successively a server crash happens.

Other things in this release
----------------------------

* Streams: a bug in the iterator could prevent certain items to be returned in
           range queries under specific conditions.
* Memleak in bitfieldCommand fixed.
* Modules API: Preserve client->id for blocked clients.
* Fix memory leak when rewriting config file in case of write errors.
* New modules API: RedisModule_GetKeyNameFromIO().
* Fix non critical bugs in diskless replication.
* New mdouels API: command filtering. See RedisModule_RegisterCommandFilter();
* Tests improved to be more deterministic.
* Fix a Redis Cluster bug, manual failover may abort because of the master
  sending PINGs to the replicas.

The following is the full list of commmits.

Regards,
Salvatore

Christian Zeller in commit 1cac9b4b:
 Typo fixes in CONTRIBUTING
 1 file changed, 2 insertions(+), 2 deletions(-)

antirez in commit f63c5c7b:
 Update CONTRIBUTING with present info.
 1 file changed, 15 insertions(+), 5 deletions(-)

antirez in commit 668661da:
 Narrow the effects of PR #6029 to the exact state.
 1 file changed, 17 insertions(+), 5 deletions(-)

chendianqiang in commit 3c2800e3:
 stop ping when client pause
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit 7ac7ffd5:
 Test: fix slowlog test false positive.
 1 file changed, 3 insertions(+), 1 deletion(-)

antirez in commit cc101721:
 Make comment in getClientOutputBufferMemoryUsage() describing the present.
 1 file changed, 1 insertion(+), 8 deletions(-)

WuYunlong in commit 72420b0d:
 Do not active expire keys in the background when the switch is off.
 1 file changed, 6 insertions(+), 4 deletions(-)

liaotonglang in commit 33a50d24:
 delete sdsTest() from REDIS_TEST
 1 file changed, 2 deletions(-)

zhaozhao.zz in commit 6a92836f:
 test cases: skiptill -> skip-till
 1 file changed, 1 insertion(+), 1 deletion(-)

Oran Agra in commit f179f71e:
 make replication tests more stable on slow machines
 3 files changed, 34 insertions(+), 4 deletions(-)

Yossi Gottlieb in commit 1825a4ec:
 Add runtest-moduleapi with commandfilter coverage.
 5 files changed, 63 insertions(+), 28 deletions(-)

Yossi Gottlieb in commit 9d20fdb4:
 fix: missing initialization.
 3 files changed, 1 insertion(+)

antirez in commit ded1980e:
 Test: disable module testing for now.
 1 file changed, 1 deletion(-)

Yossi Gottlieb in commit c3df78c2:
 CommandFilter API: REDISMODULE_CMDFILTER_NOSELF.
 4 files changed, 62 insertions(+), 15 deletions(-)

Yossi Gottlieb in commit 8d38ef20:
 CommandFilter API: fix UnregisterCommandFilter.
 1 file changed, 2 insertions(+), 3 deletions(-)

Yossi Gottlieb in commit 9b7009b1:
 CommandFilter API: Add unregister option.
 4 files changed, 126 insertions(+), 32 deletions(-)

Yossi Gottlieb in commit 05802442:
 CommandFilter API: Extend documentation.
 1 file changed, 43 insertions(+), 5 deletions(-)

Yossi Gottlieb in commit d5194daf:
 CommandFilter API: hellofilter and tests.
 2 files changed, 47 insertions(+), 5 deletions(-)

Yossi Gottlieb in commit 8897c154:
 CommandFilter API: Support Lua and RM_call() flows.
 2 files changed, 18 insertions(+), 7 deletions(-)

Yossi Gottlieb in commit 6dd5bad4:
 CommandFilter API: More cleanup.
 2 files changed, 10 insertions(+), 29 deletions(-)

Yossi Gottlieb in commit 83026101:
 Add command filter Module API tests.
 2 files changed, 28 insertions(+)

Yossi Gottlieb in commit dc5edc7b:
 Add command filtering argument handling API.
 3 files changed, 132 insertions(+), 13 deletions(-)

Yossi Gottlieb in commit 5f29e2e2:
 Initial command filter experiment.
 6 files changed, 161 insertions(+), 2 deletions(-)

Oran Agra in commit e1839ab3:
 diskless fork kept streaming RDB to a disconnected slave
 1 file changed, 10 insertions(+)

Oran Agra in commit 3b207b89:
 diskless replication - notify slave when rdb transfer failed
 1 file changed, 1 insertion(+)

antirez in commit 7e350b09:
 More sensible name for function: restartAOFAfterSYNC().
 1 file changed, 7 insertions(+), 3 deletions(-)

antirez in commit 91238a60:
 Mostly aesthetic changes to restartAOF().
 1 file changed, 7 insertions(+), 3 deletions(-)

oranagra in commit ee2da67c:
 bugfix to restartAOF, exit will never happen since retry will get negative.
 1 file changed, 5 insertions(+), 4 deletions(-)

Oran Agra in commit 78022492:
 Add log when server dies of SIGTERM during loading
 1 file changed, 1 insertion(+)

Yossi Gottlieb in commit 232dca7f:
 Add RedisModule_GetKeyNameFromIO().
 8 files changed, 30 insertions(+), 17 deletions(-)

antirez in commit 7f98129a:
 MANIFESTO: simplicity and lock-in.
 1 file changed, 5 insertions(+), 1 deletion(-)

antirez in commit 71265fe3:
 MANIFESTO v2.
 1 file changed, 41 insertions(+), 6 deletions(-)

yongman in commit 8115be6e:
 Fix uint64_t hash value in active defrag
 1 file changed, 3 insertions(+), 3 deletions(-)

Angus Pearson in commit 90e7b5a9:
 Enlarge error buffer in redis-check-aof.c to remove compiler warning of output truncation through snprintf format string
 1 file changed, 1 insertion(+), 1 deletion(-)

zhaozhao.zz in commit 43151baf:
 fix memory leak when rewrite config file
 1 file changed, 3 insertions(+), 4 deletions(-)

唐权 in commit d3c17c9d:
 Update ziplist.c
 1 file changed, 1 insertion(+), 1 deletion(-)

stan011 in commit 296bd097:
 change the comments there may have a mis type
 1 file changed, 1 insertion(+), 1 deletion(-)

Yossi Gottlieb in commit e08c9c15:
 Preserve client->id for blocked clients.
 1 file changed, 4 insertions(+), 1 deletion(-)

zhaozhao.zz in commit c6b1252f:
 aof: enhance AOF_FSYNC_EVERYSEC, more details in #5985
 2 files changed, 32 insertions(+), 3 deletions(-)

David Carlier in commit ce54e299:
 build fix
 1 file changed, 1 insertion(+)

yongman in commit c9274498:
 Fix memleak in bitfieldCommand
 1 file changed, 8 insertions(+), 2 deletions(-)

James Rouzier in commit 635d8d83:
 Fix start and end key initialize
 1 file changed, 2 insertions(+), 2 deletions(-)

Salvatore Sanfilippo in commit 7c23e534:
 Merge pull request #6047 from abhaynahar/removed-obsolete-warning-5.0
abhay in commit 9ea8ec42:
 removed obsolete warning as per - https://github.com/antirez/redis/issues/5291
 1 file changed, 1 insertion(+), 7 deletions(-)

antirez in commit 1b7407fa:
 Aesthetic change to #5962 to conform to Redis style.
 1 file changed, 1 insertion(+), 3 deletions(-)

Oran Agra in commit 3bbf9747:
 slave corrupts replication stream when module blocked client uses large reply (or POSTPONED_ARRAY)
 3 files changed, 15 insertions(+), 6 deletions(-)

================================================================================
Redis 5.0.4     Released Mon Mar 18 17:12:53 CET 2019
================================================================================

Upgrade urgency HIGH: This release fixes several Redis stability issues.

Dear Redis users, this release includes a number of fixes for bugs that may
result in Redis crashing in special conditions (not normal usage, but specific
artificial conditions), fixes to certain Redis behaviors especially around
Redis streams, and finally a set of new APIs for Redis Modules.

Specifically:

* Hyperloglog different coding errors leading to potential crashes were fixed.
* A replication bug leading to a potential crash in case of plain misuse of handshake commands was fixed.
* XCLAIM command incrementing of number of deliveries was fixed.
* LFU field management in objects was improved.
* A potential overflow in the redis-check-aof was fixed.
* A memory leak in case of API misuse was fixed.
* ZPOP* behavior when count is 0 is fixed.
* A few redis-cli --cluster bugs were fixed, plus a few improvements.
* Many other smaller bugs.

We suggest to upgrade Redis, especially in case your instance is facing
untrusted users (for instance Cloud providers) because several of these
bugs could result in unwanted crashes.

This is the list of commits:

antirez in commit 84bdd440:
 HyperLogLog: fix comment in hllCount().
 1 file changed, 2 insertions(+), 2 deletions(-)

antirez in commit ef1833b3:
 HyperLogLog: handle wrong offset in the base case.
 1 file changed, 2 insertions(+), 6 deletions(-)

antirez in commit 623afd5e:
 HyperLogLog: speedup fuzz test.
 1 file changed, 1 insertion(+), 2 deletions(-)

antirez in commit 12b5ff10:
 HyperLogLog: enlarge reghisto variable for safety.
 1 file changed, 6 insertions(+), 1 deletion(-)

antirez in commit 254d897e:
 HyperLogLog: dense/sparse repr parsing fuzz test.
 1 file changed, 29 insertions(+)

John Sully in commit 7f79849c:
 Fix hyperloglog corruption
 1 file changed, 6 insertions(+)

Brad Solomon in commit 3ef2c831:
 Provide an uninstall target in Makefile
 1 file changed, 3 insertions(+)

antirez in commit 57aea463:
 redis-check-aof: fix potential overflow.
 1 file changed, 2 insertions(+), 2 deletions(-)

antirez in commit ba5145b8:
 Fix objectSetLRUOrLFU() when LFU underflows.
 1 file changed, 11 insertions(+), 7 deletions(-)

antirez in commit 76c59f0e:
 Fix ZPOP return type when COUNT=0. Related to #5799.
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit 1c636714:
 Improve comments after merging #5834.
 2 files changed, 14 insertions(+), 8 deletions(-)

Guy Benoish in commit 6a3fca4c:
 Trim SDS free space of retained module strings
 4 files changed, 28 insertions(+), 5 deletions(-)

Guy Benoish in commit 9ec144ea:
 Fix mismatching keyspace notification classes
 2 files changed, 2 insertions(+), 2 deletions(-)

Guy Benoish in commit d04b5211:
 Fix zlexrangespec mem-leak in genericZrangebylexCommand
 1 file changed, 4 insertions(+), 1 deletion(-)

Guy Benoish in commit 516f1c77:
 Use memtoll() in 'CONFIG SET client-output-buffer-limit'
 1 file changed, 2 insertions(+), 2 deletions(-)

Guy Benoish in commit 8db67a55:
 Increase string2ld's buffer size (and fix HINCRBYFLOAT)
 2 files changed, 5 insertions(+), 1 deletion(-)

Guy Benoish in commit db3d626b:
 Check server.verbosity in RM_LogRaw
 1 file changed, 2 insertions(+)

Guy Benoish in commit 71439a07:
 ZPOP should return an empty array if COUNT=0
 1 file changed, 4 insertions(+), 1 deletion(-)

antirez in commit c8a26834:
 Modules shared API: export new core APIs.
 2 files changed, 6 insertions(+)

antirez in commit a13ba750:
 Modules shared API: also unregister the module as user.
 1 file changed, 23 insertions(+)

antirez in commit 500e5117:
 Modules shared API: prevent unloading of used modules.
 1 file changed, 10 insertions(+), 4 deletions(-)

antirez in commit 7854daa1:
 Modules shared API: unregister APIs function.
 1 file changed, 25 insertions(+)

antirez in commit d38d82af:
 Modules shared API: initial core functions.
 2 files changed, 89 insertions(+), 1 deletion(-)

antirez in commit 4d747bb8:
 Revert shared APIs to modify the design.
 3 files changed, 120 deletions(-)

MeirShpilraien in commit 8824b509:
 added module ability to register api to be used by other modules
 3 files changed, 120 insertions(+)

zhaozhao.zz in commit 000b055b:
 Streams: checkType before XGROUP CREATE
 1 file changed, 7 insertions(+), 5 deletions(-)

antirez in commit 9b2a0d54:
 Fix BZPOP arity, backport from fix in cd2743c.
 1 file changed, 2 insertions(+), 2 deletions(-)

chendianqiang in commit 134b2582:
 optimize cluster failover
 1 file changed, 1 insertion(+)

Steve Webster in commit 1293e2a5:
 Only increment delivery count if JUSTID option is omitted
 2 files changed, 18 insertions(+), 3 deletions(-)

Steve Webster in commit 3cc4f469:
 Increment delivery counter on XCLAIM unless RETRYCOUNT specified
 2 files changed, 35 insertions(+), 2 deletions(-)

antirez in commit f4edd2b9:
 Merge branch '5.0' of github.com:/antirez/redis into 5.0
swilly22 in commit cedcc54e:
 document additional flag of RM_GetContextFlags
 1 file changed, 3 insertions(+)

swilly22 in commit 26e98da2:
 Extend REDISMODULE_CTX_FLAGS to indicate if command was sent by master
 2 files changed, 6 insertions(+)

Salvatore Sanfilippo in commit 0e910939:
 Merge pull request #5879 from meierfra-ergon/redis-cli-assume-yes
antirez in commit 67452e91:
 Make comment in #5911 stay inside 80 cols.
 1 file changed, 2 insertions(+), 1 deletion(-)

John Sully in commit 30f666ef:
 Replicas aren't allowed to run the replicaof command
 1 file changed, 8 insertions(+)

Frank Meier in commit bc6c1c40:
 extend use of cluster-yes option to other confimation questions
 1 file changed, 9 insertions(+)

antirez in commit 76419d8d:
 Merge branch '5.0' of github.com:/antirez/redis into 5.0
Oran Agra in commit 72ba6069:
 redis-cli add support for --memkeys, fix --bigkeys for module types
 1 file changed, 132 insertions(+), 81 deletions(-)

chendianqiang in commit 2ca21753:
 fix replicationid will not change for server.masterhost==NULL in cluster mode when restart slave
 1 file changed, 1 insertion(+), 1 deletion(-)

Salvatore Sanfilippo in commit bd7ddd79:
 Merge pull request #5870 from fengweiyuan/5.0
varianfeng in commit d13bc143:
 fix corrupt_rdb.c bug.Let the name of input rdb file name be valid.
 1 file changed, 2 insertions(+), 1 deletion(-)

artix in commit 44c5bce0:
 Cluster Manager: fix replica assigment anti-affinity (create)
 1 file changed, 6 insertions(+)

artix in commit f066e526:
 Cluster Manager: remove unused code elements
 1 file changed, 8 insertions(+), 13 deletions(-)

Zhicheng Wei in commit 23214966:
 fix clusterManagerGetAntiAffinityScore double free otypes
 1 file changed, 2 insertions(+), 1 deletion(-)

antirez in commit 80bccd71:
 Remove debugging printf from replication.tcl test.
 1 file changed, 1 deletion(-)

================================================================================
Redis 5.0.3     Released Tue Dec 11 18:17:26 CET 2018
================================================================================

Upgrade urgency HIGH: Redis 5 is consolidating, upgrading is a good idea.
                      However there is nothing very critical here, but certain
                      issues resolved could lead to very rare crashes.

Welcome to Redis 5.0.3, several interesting bug fixes here:

* Redis no longer panics when you send data to a replica-mode connection that
  is in MONITOR or SYNC mode.

* Fixes to certain sorted set edge cases. You are unlikely to ever notice those
  issues, but now it is more correct.

* Certain BSD variants now are better supported: build & register logging
  on crash.

* The networking core now recovers if an IPv6 address is listed in bind but
  is actually not able to work because there is no such protocol in the
  system.

* redis-cli cluster mode improved in many ways. Especially the fix subcommand
  work was enhanced to cover other edge cases that were still not covered
  after the work done for Redis 5.

* MEMORY USAGE is now more accurate.

* DEBUG DIGEST-VALUE added in case you want to make sure a given set of keys
  (and not the whole DB) are excatly the same between two instances.

* Fix a potential crash in the networking code related to recent changes
  to the way the reply is consumed.

* Reject EXEC containing write commands against an instance that changed role
  from master to replica during our transaction.

* Fix a crash in KEYS and other commands using pattern matching, in an edge
  case where the pattern contains a zero byte.

* Fix eviction during AOF loading due to maxmemory triggered by commands
  executed in loading state.

The following is the list of commmits if you want to check credits or dig
further in the details.

commit 2c6ee0f9b3d9ca48c6da8bd18796186784216bff
Author: antirez <antirez@gmail.com>
Date:   Wed Dec 12 11:37:15 2018 +0100

    freeMemoryIfNeeded() small refactoring.

    Related to issue #5686 and PR #5689.

commit 107e93e75acfd5def0252efb6870751940816395
Author: zhaozhao.zz <zhaozhao.zz@alibaba-inc.com>
Date:   Wed Dec 12 00:25:24 2018 +0800

    evict: don't care about mem if loading

    When loading data, we call processEventsWhileBlocked
    to process events and execute commands.
    But if we are loading AOF it's dangerous, because
    processCommand would call freeMemoryIfNeeded to evict,
    and that will break data consistency, see issue #5686.

antirez in commit ee93dc0b:
 Crashing is too much in addReplyErrorLength().
 1 file changed, 6 deletions(-)

hdmg in commit c55254a5:
 fix comments fault discription
 1 file changed, 1 insertion(+), 1 deletion(-)

lsytj0413 in commit dfd25013:
 fix a typo: craeted -> created
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit 392a2566:
 stringmatchlen() fuzz test added.
 3 files changed, 22 insertions(+)

antirez in commit 7602f695:
 Fix stringmatchlen() read past buffer bug.
 1 file changed, 1 insertion(+), 1 deletion(-)

zhaozhao.zz in commit c4f3585e:
 multi: ignore multiState's cmd_flags when loading AOF
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit d037e987:
 Reject EXEC containing write commands against RO replica.
 2 files changed, 20 insertions(+)

artix in commit e00ab324:
 Cluster Manager: - Multiple owners checking in 'fix'/'check' commands is
 now optional (using --cluster-search-multiple-owners). - Updated help.
 1 file changed, 14 insertions(+), 5 deletions(-)

artix in commit 94f64de3:
 Cluster Manager: FixOpenSlot now correctly updates in-memory cluster
 configuration. Improved output messages.
 1 file changed, 17 insertions(+), 5 deletions(-)

artix in commit 752d636f:
 Cluster Manager: 'fix' command now handles open slots with migrating state
 in one node and importing state in multiple nodes.
 1 file changed, 74 insertions(+), 6 deletions(-)

artix in commit 552091f9:
 Cluster Manager: setting new slot owner is now handled atomically in
 'fix' command.
 1 file changed, 72 insertions(+), 31 deletions(-)

artix in commit 2280f4f7:
 Cluster Manager: code cleanup.
 1 file changed, 41 insertions(+), 87 deletions(-)

artix in commit e084b8cc:
 Cluster Manager: check/fix commands now handle multiple owners even
 if all slots are covered and not open.
 1 file changed, 129 insertions(+), 6 deletions(-)

zhaozhao.zz in commit fa726e2a:
 remove useless tryObjectEncoding in debug assert
 1 file changed, 1 deletion(-)

Oran Agra in commit 40244b10:
 fix #5580, display fragmentation and rss overhead bytes as signed
 2 files changed, 6 insertions(+), 6 deletions(-)

zhaozhao.zz in commit beab3151:
 networking: current_client should not be NULL when trim qb_pos
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit 07ccb642:
 Remove no longer relevant comment in processCommand().
 1 file changed, 2 insertions(+), 6 deletions(-)

antirez in commit 60fdaf07:
 DEBUG DIGEST-VALUE implemented.
 1 file changed, 17 insertions(+), 3 deletions(-)

antirez in commit 48b31b0d:
 DEBUG DIGEST refactoring: extract function to digest a value.
 1 file changed, 142 insertions(+), 131 deletions(-)

yura in commit ef3ff402:
 redis-cli reshard/rebalance: ability to force replacement on existing keys
 1 file changed, 6 insertions(+), 5 deletions(-)

Thomas Orozco in commit ee223fb8:
 cli: pass auth through REDISCLI_AUTH
 1 file changed, 14 insertions(+)

yongman in commit 41295e55:
 Fix cluster call reply format readable
 1 file changed, 1 insertion(+), 1 deletion(-)

Oran Agra in commit 0ed3970f:
 fix small test suite race conditions
 3 files changed, 11 insertions(+)

zhaozhao.zz in commit 605dddbb:
 MEMORY command: make USAGE more accurate
 1 file changed, 7 insertions(+), 6 deletions(-)

yongman in commit 1f43bf29:
 Fix choose a random master node for slot assignment
 1 file changed, 29 insertions(+), 5 deletions(-)

Weiliang Li in commit 69f0c678:
 fix comment typo in util.c
 1 file changed, 1 insertion(+), 1 deletion(-)

Chris Lamb in commit bc53a3ab:
 Clarify the "Creating Server TCP listening socket" error.
 1 file changed, 1 insertion(+), 1 deletion(-)

Chris Lamb in commit fefe5460:
 Don't treat unsupported protocols as fatal errors
 1 file changed, 4 insertions(+)

David Carlier in commit a8862972:
 OpenBSD support.
 3 files changed, 74 insertions(+), 1 deletion(-)

David Carlier in commit 5e86daf9:
 Backtrace/register dump on BSD.
 3 files changed, 97 insertions(+), 3 deletions(-)

Guy Benoish in commit 7c8cf5ac:
 Don't call sdscmp() with shared.maxstring or shared.minstring
 2 files changed, 23 insertions(+), 9 deletions(-)

Qu Chen in commit 39e9eda3:
 Add unit test for stream XCLAIM command.
 1 file changed, 48 insertions(+)

antirez in commit 62485232:
 Abort instead of crashing when loading bad stream master key.
 1 file changed, 3 insertions(+)

Madelyn Olson in commit a5487309:
 Fixed a serverPanic when sending an invalid command to a monitor client
 1 file changed, 1 insertion(+), 1 deletion(-)

================================================================================
Redis 5.0.2     Released Thu Nov 22 11:22:37 CET 2018
================================================================================

Upgrade urgency: CRITICAL if you use streams and consumer groups.
                 HIGH if you use redis-cli with Redis Cluster.
                 LOW otherwise.

Welcome to Redis 5.0.2. This release fixes two issues with Streams consumer
groups, where items could be returned duplicated by XREADGROUP when accessing
the history, and another bug where XREADGROUP can report some history even
if the comsumer pending list is empty. Both problems were addressed and unit
tests to avoid regressions implemented. Moreover this release fixes some
issue with redis-cli when in cluster mode. Finally some FreeBSD and DragonFly
build problems are now resolved. The list of the commits is below.

Enjoy,
Salvatore

David Carlier in commit e8b4291a:
 DragonFlyBSD little build fix
 2 files changed, 6 insertions(+), 1 deletion(-)

yongman in commit 8fcfd374:
 skip slave nodes when sending cluster setslot command
 1 file changed, 1 insertion(+)

yongman in commit d7089ddd:
 Fix pointer access and memory leak in redis-cli.
 1 file changed, 6 insertions(+), 3 deletions(-)

antirez in commit 17b4cd83:
 Test: regression test for #5570.
 1 file changed, 15 insertions(+)

antirez in commit 45123169:
 Stream: fix XREADGROUP history reading of deleted messages.
 1 file changed, 1 insertion(+), 1 deletion(-)

David Carlier in commit 5ad588f0:
 only FreeBSD change/little warning addressing
 2 files changed, 7 insertions(+), 4 deletions(-)

David Carlier in commit 11801e1a:
 tweak form feedback
 1 file changed, 1 insertion(+), 1 deletion(-)

David Carlier in commit c1f13575:
 allow flavors
 1 file changed, 1 insertion(+), 1 deletion(-)

David Carlier in commit 275a2d49:
 Fix clang build.
 1 file changed, 5 insertions(+), 1 deletion(-)

antirez in commit 44ad5141:
 Test: regression test for #5577.
 1 file changed, 24 insertions(+)

antirez in commit c7951f43:
 Streams: fix XREADGROUP history reading when CG last_id is low.
 1 file changed, 12 insertions(+), 9 deletions(-)

antirez in commit a69bc5be:
 t_stream.c comment resized to 80 cols.
 1 file changed, 2 insertions(+), 1 deletion(-)

antirez in commit 5314099d:
 Redis 5 changelog: don't expect Lua replies to be ordered.
 1 file changed, 14 insertions(+), 5 deletions(-)

================================================================================
Redis 5.0.1     Released Wed Nov 07 13:09:30 CET 2018
================================================================================

Upgrade urgency: URGENT if you use Redis Streams. MODERATE otherwise.

Hi all, this is the first patch level release of Redis 5. It contains
both fixes and improvements. Here there is a list of the major ones, however
read the commit messages at the end of the changelog if you want to know
more about the smaller things. Let's start with the new features:

* Sentinel now supports authentication! Check the Sentinel official doc
  for more info.

* Redis-cli cluster "fix" is now able to fix a big number of clusters put
  in a bad condition. Previously many corner cases were not covered.

Now the critical fixes:

1. Fix RESTORE mismatch reply when certain keys already expired.
2. Fix an XCLAIM non trivial issue: sometimes the command returned a wrong
   entry or desynchronized the protocol.

And now the other fixes:

3. Stack trace generation on the Raspberry PI (and 32bit ARM) fixed.
4. Don't evict expired keys when the KEYS command is called, in order to
   avoid a mass deletion event. However expired keys are not displayed
   by KEYS as usually.
5. Improvements in the computation of the memory used, when estimating
   the AOF buffers.
6. XRANGE COUNT of 0 fixed.
7. "key misses" stats accounting fixed. Many cache misses were not counted.
8. When in MULTI state, return OOM while accumulating commands and there
   is no longer memory available.
9. Fix build on FreeBSD and possibly others.
10. Fix a crash in Redis modules, thread safe context reply accumulation.
11. Fix a race condition when producing the RDB file for full SYNC.
12. Disable protected mode in Sentinel.
13. More commands now have the HELP subcommand.
14. Fixed an issue about adaptive server HZ timer.
15. Fix cluster-replica-no-failover option name.

Finally, this is the list of commits. Enjoy Redis 5.0.1!

antirez in commit c801283f:
 Fix cluster-replica-no-failover option name.
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit 4c4f50e1:
 MEMORY command: make strcasecmp() conditional like the following.
 1 file changed, 1 insertion(+), 2 deletions(-)

Itamar Haber in commit a7b46e0e:
 Uppercases subcommands in MEMORY HELP
 1 file changed, 5 insertions(+), 5 deletions(-)

Itamar Haber in commit 80e129d9:
 Standardizes `MEMORY HELP` subcommand
 1 file changed, 13 insertions(+), 14 deletions(-)

valentino in commit 88805cbb:
 fix short period of server.hz being uninitialized
 1 file changed, 1 insertion(+), 1 deletion(-)

Itamar Haber in commit 6b402733:
 Adds HELP to LATENCY
 1 file changed, 14 insertions(+), 2 deletions(-)

yongman in commit 1c637de9:
 fix malloc in clusterManagerComputeReshardTable
 1 file changed, 1 insertion(+), 1 deletion(-)

artix in commit 90b52fde:
 Cluster Manager: removed unused var.
 1 file changed, 1 insertion(+), 2 deletions(-)

artix in commit 89cbb5df:
 Cluster Manager: further improvements to "fix": - clusterManagerFixOpenSlot: ensure that the   slot is unassigned before ADDSLOTS - clusterManagerFixSlotsCoverage: after cold   migration, the slot configuration   is now updated on all the nodes.
 1 file changed, 49 insertions(+), 10 deletions(-)

artix in commit 175515c9:
 Cluster Manager: fixed string parsing issue in clusterManagerGetConfigSignature
 1 file changed, 3 insertions(+), 3 deletions(-)

artix in commit 3997dd6e:
 Cluster Manager: better fix subcommand.
 1 file changed, 78 insertions(+), 20 deletions(-)

artix in commit bd80291c:
 Cluster Manager: fixed typos in comments.
 1 file changed, 3 insertions(+), 3 deletions(-)

artix in commit 4369cbce:
 Cluster Manager: fixed 'DELSLOT' subcommand typo.
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit 1ed821e2:
 Fix XCLAIM missing entry bug.
 1 file changed, 3 insertions(+), 2 deletions(-)

michael-grunder in commit b49bcd01:
 Use typedef'd mstime_t instead of time_t
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit 09d1849e:
 Improve streamReplyWithRange() top comment.
 1 file changed, 9 insertions(+), 5 deletions(-)

antirez in commit bdf6306f:
 Add support for Sentinel authentication.
 1 file changed, 17 insertions(+), 3 deletions(-)

antirez in commit 50222af5:
 Disable protected mode in Sentinel mode.
 1 file changed, 1 insertion(+)

antirez in commit 643ee6e3:
 When replica kills a pending RDB save during SYNC, log it.
 1 file changed, 6 insertions(+)

Andrey Bugaevskiy in commit 8b609c99:
 Move child termination to readSyncBulkPayload
 1 file changed, 6 insertions(+), 7 deletions(-)

Andrey Bugaevskiy in commit 27102605:
 Prevent RDB autosave from overwriting full resync results
 1 file changed, 7 insertions(+)

antirez in commit a677923d:
 asyncCloseClientOnOutputBufferLimitReached(): don't free fake clients.
 1 file changed, 1 insertion(+)

David Carlier in commit 427e440a:
 needs it for the global
 1 file changed, 1 insertion(+)

David Carlier in commit 28f9ca4e:
 Fix non Linux build.
 3 files changed, 20 insertions(+), 1 deletion(-)

zhaozhao.zz in commit 4bf9efe2:
 MULTI: OOM err if cannot free enough memory in MULTI/EXEC context
 1 file changed, 5 insertions(+), 2 deletions(-)

antirez in commit 4fbd7a39:
 Add command fingerprint comment for XSETID.
 1 file changed, 3 insertions(+), 1 deletion(-)

Itamar Haber in commit 2480db53:
 Plugs a potential underflow
 1 file changed, 1 insertion(+)

Itamar Haber in commit e5e4d2ef:
 Corrects inline documentation of syntax
 1 file changed, 1 insertion(+), 1 deletion(-)

zhaozhao.zz in commit 713800d2:
 if we read a expired key, misses++
 1 file changed, 5 insertions(+), 1 deletion(-)

antirez in commit e79ee263:
 Fix XRANGE COUNT option for value of 0.
 1 file changed, 8 insertions(+), 2 deletions(-)

antirez in commit 505cc70f:
 Fix typo in streamReplyWithRange() top comment.
 1 file changed, 1 insertion(+), 1 deletion(-)

Damien Tournoud in commit 3c36561d:
 Overhead is the allocated size of the AOF buffer, not its length
 2 files changed, 2 insertions(+), 2 deletions(-)

antirez in commit 3761582f:
 Simplify part of the #5470 patch.
 1 file changed, 11 insertions(+), 12 deletions(-)

zhaozhao.zz in commit edc47a3a:
 do not delete expired keys in KEYS command
 1 file changed, 34 insertions(+), 27 deletions(-)

antirez in commit 9872af6d:
 Use guide comments to make changes in #5462 more obvious.
 1 file changed, 6 insertions(+)

youjiali1995 in commit 3f399c3b:
 migrate: fix mismatch of RESTORE reply when some keys have expired.
 1 file changed, 8 insertions(+), 6 deletions(-)

hujie in commit eaaff621:
 fix typo in config.c
 1 file changed, 1 insertion(+), 1 deletion(-)

hujiecs in commit 43ebb7ee:
 several typos fixed, optimize MSETNX to avoid unnecessary loop
 4 files changed, 4 insertions(+), 4 deletions(-)

antirez in commit de8fdaac:
 Remove useless complexity from MSET implementation.
 1 file changed, 5 insertions(+), 7 deletions(-)

antirez in commit dc8f1112:
 Fix again stack generation on the Raspberry Pi.
 1 file changed, 4 insertions(+)

antirez in commit 83a6e81d:
 Get rid of the word slave in the release note of Redis 5.
 1 file changed, 2 insertions(+), 2 deletions(-)

================================================================================
Redis 5.0.0     Released Wed Oct 17 13:28:26 CEST 2018
================================================================================

Upgrade urgency CRITICAL: Several fixes to streams AOF and replication.

Hi all and welcome to the first stable release of Redis 5! \o/

To start a quick recap of what's new in Redis 5:

1. The new Stream data type. https://redis.io/topics/streams-intro
2. New Redis modules APIs: Timers, Cluster and Dictionary APIs.
3. RDB now store LFU and LRU information.
4. The cluster manager was ported from Ruby (redis-trib.rb) to C code
   inside redis-cli. Check `redis-cli --cluster help` for more info.
5. New sorted set commands: ZPOPMIN/MAX and blocking variants.
6. Active defragmentation version 2.
7. Improvemenets in HyperLogLog implementations.
8. Better memory reporting capabilities.
9. Many commands with sub-commands now have an HELP subcommand.
10. Better performances when clients connect and disconnect often.
11. Many bug fixes and other random improvements.
12. Jemalloc was upgraded to version 5.1
13. CLIENT UNBLOCK and CLIENT ID.
14. The LOLWUT command was added. http://antirez.com/news/123
15. We no longer use the "slave" word if not for API backward compatibility.
16. Differnet optimizations in the networking layer.
17. Lua improvements:
    - Better propagation of Lua scripts to replicas / AOF.
    - Lua scripts can now timeout and get in -BUSY state in the replica as well.
18. Dynamic HZ to balance idle CPU usage with responsiveness.
19. The Redis core was refactored and improved in many ways.

However the list above really does not do justice to the changes of Redis 5
since the core was improved in many ways during the development of the new
version. However certain changes were back ported into Redis 4 once they were
sensed as safe, because many improvements were hard to distinguish from fixes.

The most important user facing improvement is without doubts the introduction
of the new general purpose data type after years: the streams.

Note that we worked to improve and fix streams till a few hours ago, so while
we are not aware of critical bugs in this release, surely there is to handle it
with some care for the first weeks. Bug reporting will be highly appreciated and
we are ready to work immediately to release 5.0.1 once there is enough important
stuff to justify a new release (probably soon).

People not using the streams can have probably a better production-ready
experience with Redis 5, also because many internals are shared with Redis 4
so the jump is not as big as it was between 3.2 and 4 in terms of how things
internally work.

Well, many thanks to the Redis community and the developers that made
this release possible, contributing bug reports, patches, new features, working
on the clients, sometimes debugging problems for days. Also thank to everybody
that adopted Redis for their use cases making things work for users worldwide.

The list of commits in this release follows.

Cheers,
Salvatore

antirez in commit bcc0916d:
 Fix conditional in XGROUP.
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit 1b2f23f3:
 Update help.h for redis-cli.
 1 file changed, 57 insertions(+), 7 deletions(-)

antirez in commit de0ae56c:
 Tests for XGROUP CREATE MKSTREAM.
 1 file changed, 11 insertions(+)

antirez in commit 56c3dfa1:
 Fix XGROUP CREATE MKSTREAM handling of .
 1 file changed, 7 insertions(+), 2 deletions(-)

antirez in commit 2687f228:
 Process MKSTREAM option of XGROUP CREATE at a later time.
 1 file changed, 28 insertions(+), 17 deletions(-)

zhaozhao.zz in commit cfbaf8f1:
 Scripting & Streams: some commands need right flags
 1 file changed, 5 insertions(+), 5 deletions(-)

antirez in commit 4e4099b9:
 XGROUP CREATE: MKSTREAM option for automatic stream creation.
 1 file changed, 29 insertions(+), 5 deletions(-)

zhaozhao.zz in commit 6dd4d864:
 Streams: Tests modified XSTREAM -> XSETID
 1 file changed, 2 insertions(+), 2 deletions(-)

zhaozhao.zz in commit 3aff0e8c:
 Streams: rewrite empty streams with certain lastid
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit 880b563e:
 Tests modified to use XADD MAXLEN 0 + XSETID.
 1 file changed, 12 insertions(+), 26 deletions(-)

antirez in commit 83c87835:
 Streams: rewrite empty streams with XADD MAXLEN 0. Use XSETID.
 1 file changed, 18 insertions(+), 12 deletions(-)

antirez in commit fd22e3ac:
 XSETID: accept IDs based on last entry.
 1 file changed, 18 insertions(+), 5 deletions(-)

antirez in commit dfab3cba:
 Streams: XSTREAM SETID -> XSETID.
 3 files changed, 17 insertions(+), 67 deletions(-)

zhaozhao.zz in commit a3fb28ed:
 Streams: rewrite id in XSTREAM CREATE *
 1 file changed, 4 insertions(+)

zhaozhao.zz in commit f4b4db13:
 Streams: add tests for aof rewrite
 1 file changed, 23 insertions(+)

zhaozhao.zz in commit d22f1ef0:
 Stream & AOF: rewrite stream in correct way
 1 file changed, 32 insertions(+), 16 deletions(-)

zhaozhao.zz in commit 6455274d:
 Streams: add tests for XSTREAM command
 1 file changed, 39 insertions(+)

zhaozhao.zz in commit 0edbe953:
 Streams: add a new command XTREAM
 3 files changed, 67 insertions(+)

Hamid Alaei in commit 9714bba2:
 fix timer context selected database
 1 file changed, 3 insertions(+), 1 deletion(-)

antirez in commit eb53f15a:
 Make comment about nack->consumer test for minidle more obvious.
 1 file changed, 4 insertions(+), 2 deletions(-)

antirez in commit a77f836e:
 Streams: use propagate_last_id itself as streamPropagateGroupID trigger.
 1 file changed, 2 insertions(+), 2 deletions(-)

antirez in commit 0f0610eb:
 Streams: better naming: lastid_updated -> propagate_last_id.
 1 file changed, 6 insertions(+), 6 deletions(-)

zhaozhao.zz in commit a745e423:
 Streams: panic if streamID invalid after check, should not be possible.
 1 file changed, 2 insertions(+), 1 deletion(-)

zhaozhao.zz in commit 9974be13:
 Streams: propagate lastid in XCLAIM when it has effect
 1 file changed, 13 insertions(+), 6 deletions(-)

zhaozhao.zz in commit 69a628d0:
 Streams: XCLAIM ignore minidle if NACK is created by FORCE
 1 file changed, 4 insertions(+), 2 deletions(-)

zhaozhao.zz in commit a04b43c7:
 Streams: bugfix XCLAIM should propagate group name not consumer name
 1 file changed, 1 insertion(+), 1 deletion(-)

Sergey Chupov in commit 8977a90c:
 fixed typos in readme
 1 file changed, 2 insertions(+), 2 deletions(-)

antirez in commit 3a745674:
 redis.conf typo fixed: ingore -> ignore.
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit 22770d76:
 Rax: radix tree updated to latest version from antirez/rax.
 2 files changed, 233 insertions(+), 68 deletions(-)

antirez in commit fbac534f:
 Test: avoid time related false positive in RESTORE test.
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit 49872337:
 LOLWUT: capitalize Nees.
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit 80c471f5:
 Test: cgroup propagation test also for NOACK variant.
 1 file changed, 39 insertions(+), 29 deletions(-)

antirez in commit 8defa5da:
 Test: consumer group last ID slave propagation test.
 1 file changed, 39 insertions(+)

zhaozhao.zz in commit e1e3eaca:
 Avoid recreate write handler for protected client.
 1 file changed, 4 insertions(+)

antirez in commit b501fd5d:
 Fix propagation of consumer groups last ID.
 3 files changed, 56 insertions(+), 9 deletions(-)


================================================================================
Redis 5.0-rc6     Released Wed Oct 10 11:03:54 CEST 2018
================================================================================

Upgrade urgency HIGH: Many bugs fixed especially in the context of streams.

This is probably the last release candidate of Redis 5. The Redis 5 GA version
will be released 17th of October. The main highlights of this release are:

* Critical AOF bug, as old as AOF itself: if an open MULTI/EXEC block is at
  the end of the AOF file, Redis would still read the half-transaction when
  reloading back the AOF.
* The slave name was removed from logs and documentation, now replica is used
  instead.
* LOLWUT command added.
* New modules APIs: Disable Redis Cluster redirection.
* New modules APIs: Sorted dictionaries data type.
* Modules APIs fixes: timer / cluster messages callback now can call RM_Call().
* Fix for #5024 - commandstats for multi-exec were logged as EXEC.
* A number of optimizations and fixes for the stream data type.
* Many other stability improvements.

This is the list of comments and contributors:

antirez in commit 9a6fa7d0:
 changelog.tcl: get optional argument for number of commits.
 1 file changed, 8 insertions(+), 3 deletions(-)

antirez in commit 101e419f:
 Free protected clients asynchronously.
 1 file changed, 7 insertions(+)

antirez in commit 726debb8:
 Actually use the protectClient() API where needed.
 2 files changed, 8 insertions(+), 9 deletions(-)

antirez in commit 0b87f78a:
 Introduce protectClient() + some refactoring.
 2 files changed, 60 insertions(+), 18 deletions(-)

zhaozhao.zz in commit 6aa8ac70:
 debug: avoid free client unexpectedly when reload & loadaof
 1 file changed, 8 insertions(+), 2 deletions(-)

antirez in commit 48040b02:
 aof.c: improve indentation and change warning message.
 1 file changed, 11 insertions(+), 4 deletions(-)

zhaozhao.zz in commit 7cc20569:
 AOF: discard if we lost EXEC when loading aof
 2 files changed, 14 insertions(+), 3 deletions(-)

antirez in commit 2007d30c:
 Refactoring of XADD / XTRIM MAXLEN rewriting.
 1 file changed, 15 insertions(+), 22 deletions(-)

zhaozhao.zz in commit 6a298110:
 Streams: add test cases for XADD/XTRIM maxlen
 1 file changed, 46 insertions(+)

zhaozhao.zz in commit 041161b7:
 Streams: propagate specified MAXLEN instead of approximated
 1 file changed, 35 insertions(+), 6 deletions(-)

zhaozhao.zz in commit f04d799b:
 Streams: reset approx_maxlen in every maxlen loop
 1 file changed, 2 insertions(+)

zhaozhao.zz in commit affd9365:
 Streams: XTRIM  will return an error if MAXLEN with a count < 0
 1 file changed, 6 insertions(+), 1 deletion(-)

zhaozhao.zz in commit 4c405ad0:
 Streams: propagate original MAXLEN argument in XADD context
 1 file changed, 3 insertions(+), 12 deletions(-)

antirez in commit 5c6d4b4a:
 Fix typo in replicationCron() comment.
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit a67a8dbf:
 Fix typo in design comment of bio.c.
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit c4ab5a05:
 xclaimCommand(): fix comment typos.
 1 file changed, 2 insertions(+), 2 deletions(-)

antirez in commit dc0b628a:
 streamAppendItem(): Update the radix tree pointer only if changed.
 1 file changed, 2 insertions(+), 1 deletion(-)

antirez in commit 4566fbc7:
 Listpack: optionally force reallocation on inserts.
 1 file changed, 20 insertions(+)

antirez in commit 5eca170c:
 Fix printf type mismatch in genRedisInfoString().
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit 260b53a2:
 streamIteratorRemoveEntry(): set back lp only if pointer changed.
 1 file changed, 2 insertions(+), 1 deletion(-)

zhaozhao.zz in commit 5d12f9d9:
 Streams: update listpack with new pointer in XDEL
 1 file changed, 3 insertions(+)

zhaozhao.zz in commit 6b7ad838:
 bugfix: replace lastcmd with cmd when rewrite BRPOPLPUSH as RPOPLPUSH
 1 file changed, 1 insertion(+), 1 deletion(-)

Oran Agra in commit 3454a043:
 script cache memory in INFO and MEMORY includes both script code and overheads
 2 files changed, 3 insertions(+), 3 deletions(-)

Oran Agra in commit d6aeca86:
 fix #5024 - commandstats for multi-exec were logged as EXEC.
 2 files changed, 63 insertions(+), 2 deletions(-)

antirez in commit a996b2a2:
 Fix XINFO comment for consistency.
 1 file changed, 1 insertion(+), 1 deletion(-)

Bruce Merry in commit 1a8447b6:
 Fix invalid use of sdsZmallocSize on an embedded string
 1 file changed, 1 insertion(+), 1 deletion(-)

Bruce Merry in commit 8dde46ad:
 Fix incorrect memory usage accounting in zrealloc
 3 files changed, 24 insertions(+), 2 deletions(-)

Hamid Alaei in commit b362a1b7:
 fix dict get on not found
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit 55e9df8a:
 Try to avoid issues with GCC pragmas and older compilers.
 1 file changed, 7 insertions(+), 4 deletions(-)

antirez in commit b0d22702:
 Modules: hellodict example WIP #3: KEYRANGE.
 1 file changed, 40 insertions(+)

antirez in commit af2f6682:
 Modules: Modules: dictionary API WIP #13: Compare API exported.
 2 files changed, 6 insertions(+)

antirez in commit f9a3e6ef:
 Modules: Modules: dictionary API WIP #12: DictCompare API.
 1 file changed, 8 insertions(+)

antirez in commit 01e0341a:
 Modules: Modules: dictionary API WIP #11: DictCompareC API.
 1 file changed, 18 insertions(+)

antirez in commit f9b3ce9a:
 Modules: hellodict example WIP #1: GET command.
 1 file changed, 18 insertions(+)

antirez in commit 36e66d86:
 Modules: hellodict example WIP #1: SET command.
 1 file changed, 74 insertions(+)

antirez in commit e33fdbe8:
 Modules: remove useless defines in hellotimer.c
 2 files changed, 6 insertions(+), 4 deletions(-)

antirez in commit 1c8b2248:
 Modules: fix top comment of hellotimer.c
 1 file changed, 1 insertion(+), 1 deletion(-)

Guy Korland in commit 7ded552d:
 add missing argument to function doc
 1 file changed, 1 insertion(+), 1 deletion(-)

Pavel Skuratovich in commit f92b3273:
 Fix typo in comment
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit 57b6c343:
 Modules: dictionary API WIP #10: export API to modules.
 2 files changed, 60 insertions(+)

antirez in commit 3f82e59c:
 Modules: dictionary API WIP #9: iterator returning string object.
 1 file changed, 23 insertions(+), 6 deletions(-)

antirez in commit 6a73aca3:
 Modules: dictionary API WIP #8: Iterator next/prev.
 1 file changed, 42 insertions(+)

antirez in commit ef8413db:
 Modules: dictionary API WIP #7: don't store the context.
 1 file changed, 7 insertions(+), 8 deletions(-)

antirez in commit 05579e38:
 Modules: dictionary API WIP #6: implement automatic memory management.
 1 file changed, 21 insertions(+), 7 deletions(-)

antirez in commit 11c53f8c:
 Modules: dictionary API work in progress #5: rename API for consistency.
 1 file changed, 25 insertions(+), 25 deletions(-)

antirez in commit 0bd7091b:
 Modules: change RedisModuleString API to allow NULL context.
 1 file changed, 33 insertions(+), 12 deletions(-)

antirez in commit 5fc16f17:
 Modules: dictionary API work in progress #4: reseek API.
 1 file changed, 25 insertions(+), 6 deletions(-)

antirez in commit 45b7f779:
 Modules: dictionary API work in progress #3: Iterator creation.
 1 file changed, 41 insertions(+), 1 deletion(-)

antirez in commit 8576b0ae:
 Modules: dictionary API work in progress #2: Del API.
 1 file changed, 17 insertions(+), 2 deletions(-)

antirez in commit 4b0fa7a7:
 Modules: dictionary API work in progress #1.
 2 files changed, 95 insertions(+), 1 deletion(-)

antirez in commit 28210760:
 Module cluster flags: use RM_SetClusterFlags() in the example.
 2 files changed, 11 insertions(+)

antirez in commit 18c5ab93:
 Module cluster flags: add RM_SetClusterFlags() API.
 3 files changed, 33 insertions(+)

antirez in commit 4ce6bff2:
 Module cluster flags: add hooks for NO_FAILOVER flag.
 1 file changed, 4 insertions(+), 2 deletions(-)

antirez in commit 2ba52889:
 Module cluster flags: add hooks for NO_REDIRECTION flag.
 3 files changed, 14 insertions(+), 4 deletions(-)

antirez in commit 6a39ece6:
 Module cluster flags: initial vars / defines added.
 5 files changed, 20 insertions(+)

antirez in commit 0ff35370:
 Modules: rename the reused static client to something more general.
 1 file changed, 10 insertions(+), 8 deletions(-)

antirez in commit 2d11ee95:
 Modules: associate a fake client to timer context callback.
 1 file changed, 2 insertions(+)

antirez in commit 851b2ed3:
 Modules: associate a fake client to cluster message context callback.
 1 file changed, 2 insertions(+)

artix in commit 148e4911:
 Cluster Manager: clusterManagerFixOpenSlot now counts node's keys in slot if node is neither migrating nor importing.
 1 file changed, 20 insertions(+), 1 deletion(-)

Guy Korland in commit 8afca145:
 No need to return "OK"
 1 file changed, 1 insertion(+), 1 deletion(-)

Guy Korland in commit 9a278db2:
 typo fix
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit 26479036:
 Revert "fix repeat argument issue and reduce unnessary loop times for redis-cli."
 1 file changed, 7 insertions(+), 12 deletions(-)

Guy Korland in commit 27b7fb5a:
 Fix few typos
 1 file changed, 10 insertions(+), 10 deletions(-)

Guy Korland in commit 233aa2d3:
 RedisModule_HashSet call must end with NULL
 1 file changed, 3 insertions(+), 1 deletion(-)

antirez in commit a8494072:
 Sentinel: document how to undo a renamed command.
 1 file changed, 6 insertions(+), 1 deletion(-)

antirez in commit 6c8a8f2e:
 LOLWUT: split the command from version-specific implementations.
 3 files changed, 297 insertions(+), 241 deletions(-)

antirez in commit 5c758406:
 Slave removal: add a few forgotten aliases for CONFIG SET.
 1 file changed, 10 insertions(+)

antirez in commit 2da823c4:
 LOLWUT: add Redis version in the output.
 1 file changed, 3 insertions(+), 1 deletion(-)

antirez in commit bfcba420:
 LOLWUT: Ness -> Nees.
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit efed898a:
 LOLWUT: Limit maximum CPU effort.
 1 file changed, 5 insertions(+)

antirez in commit eb0fbd71:
 LOLWUT: change padding conditional to a more direct one.
 1 file changed, 1 insertion(+), 1 deletion(-)

Slobodan Mišković in commit ed08feb7:
 Fix spelling descrive -> describe
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit 2ffb4413:
 LOLWUT: fix crash when col < 2.
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit 55dae693:
 LOLWUT: fix structure typo in comment.
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit 9b3098b9:
 LOLWUT: Fix license copyright year.
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit 263dbadc:
 LOLWUT: increase the translation factor.
 1 file changed, 2 insertions(+), 2 deletions(-)

antirez in commit a622f6c0:
 LOLWUT: change default size to fit a normal terminal better.
 1 file changed, 6 insertions(+), 6 deletions(-)

antirez in commit 38b0d25a:
 LOLWUT: wrap it into a proper command.
 4 files changed, 40 insertions(+), 15 deletions(-)

antirez in commit 34ebd898:
 LOLWUT: draw Schotter by Georg Nees.
 1 file changed, 47 insertions(+), 3 deletions(-)

antirez in commit 46286e64:
 LOLWUT: draw rotated squares using trivial trigonometry.
 1 file changed, 44 insertions(+)

antirez in commit 2d4143fd:
 LOLWUT: draw lines using Bresenham algorithm.
 1 file changed, 26 insertions(+), 2 deletions(-)

antirez in commit 3546d9ce:
 LOLWUT: Rendering of the virtual canvas to a string.
 1 file changed, 78 insertions(+), 7 deletions(-)

antirez in commit b404a6ce:
 LOLWUT: show the output verbatim in redis-cli.
 1 file changed, 1 insertion(+)

antirez in commit e30ba94f:
 LOLWUT: canvas structure and BSD license on top.
 1 file changed, 46 insertions(+)

antirez in commit 9c771145:
 LOLWUT: Emit Braille unicode according to pixel pattern.
 1 file changed, 23 insertions(+)

Jakub Vrana in commit 4a1d6c7d:
 Slave removal: capitalize Replica
 2 files changed, 5 insertions(+), 5 deletions(-)

antirez in commit 72e0368a:
 Slave removal: remove slave from integration tests descriptions.
 8 files changed, 36 insertions(+), 36 deletions(-)

antirez in commit c7841c2b:
 Slave removal: remove slave from top-level tests descriptions.
 3 files changed, 12 insertions(+), 12 deletions(-)

antirez in commit 1b9b19ba:
 Slave removal: remove slave from object.c.
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit 7da266e6:
 Slave removal: remove slave from the README.
 1 file changed, 7 insertions(+), 7 deletions(-)

antirez in commit 93d803c9:
 Slave removal: server.c logs fixed.
 1 file changed, 5 insertions(+), 5 deletions(-)

antirez in commit 89434032:
 Slave removal: remove slave from sentinel.conf when possible.
 1 file changed, 18 insertions(+), 18 deletions(-)

antirez in commit 7673d88d:
 Slave removal: replace very few things in Sentinel.
 1 file changed, 12 insertions(+), 8 deletions(-)

antirez in commit f1de29b3:
 Slave removal: scripting.c logs and other stuff fixed.
 1 file changed, 6 insertions(+), 2 deletions(-)

antirez in commit 53fe558e:
 Slave removal: replication.c logs fixed.
 1 file changed, 35 insertions(+), 35 deletions(-)

antirez in commit c92b02dd:
 Slave removal: networking.c logs fixed.
 1 file changed, 5 insertions(+), 5 deletions(-)

antirez in commit be76ed0c:
 Slave removal: blocked.c logs fixed.
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit 3fd73151:
 Slave removal: Make obvious in redis.conf what a replica is.
 1 file changed, 5 insertions(+)

antirez in commit a22168e4:
 Slave removal: slave mode -> replica mode text in redis-cli.
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit 0e222fbe:
 Slave removal: fix typo of replicaof.
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit 34a5615e:
 Slave removal: slave -> replica in redis.conf and output buffer option.
 3 files changed, 132 insertions(+), 129 deletions(-)

antirez in commit 1d2fcf6f:
 Slave removal: Convert cluster.c log messages and command names.
 1 file changed, 12 insertions(+), 11 deletions(-)

antirez in commit 2546158d:
 Slave removal: config.c converted + config rewriting hacks.
 1 file changed, 117 insertions(+), 38 deletions(-)

antirez in commit c0952c0d:
 Slave removal: redis-cli --slave -> --replica.
 1 file changed, 3 insertions(+), 1 deletion(-)

antirez in commit 1f37f1dd:
 Slave removal: SLAVEOF -> REPLICAOF. SLAVEOF is now an alias.
 3 files changed, 4 insertions(+), 3 deletions(-)

Amin Mesbah in commit 7928f578:
 Use geohash limit defines in constraint check
 1 file changed, 2 insertions(+), 2 deletions(-)

Jeffrey Lovitz in commit bb2bed78:
 CLI Help text loop verifies arg count
 1 file changed, 1 insertion(+), 1 deletion(-)

youjiali1995 in commit 246980d0:
 sentinel: fix randomized sentinelTimer.
 1 file changed, 1 insertion(+), 3 deletions(-)

youjiali1995 in commit fa7de8c4:
 bio: fix bioWaitStepOfType.
 1 file changed, 3 insertions(+), 3 deletions(-)

Weiliang Li in commit 7642f9d5:
 fix usage typo in redis-cli
 1 file changed, 1 insertion(+), 1 deletion(-)

================================================================================
Redis 5.0 RC5     Released Thu Sep 06 12:54:29 CEST 2018
================================================================================

Upgrade urgency HIGH: Several imporant bugs fixed.

Hi all,

This is the release candidate number five, and has a lot of bug fixes inside,
together with a few big changes to the Redis behavior from the point of view
of replication of scripts and handling of the maxmemory directive in slaves.
Make sure to read the whole list!

* BREAKING BEHAVIOR: Slaves now ignore maxmemory by default.
* BREAKING BEHAVIOR: Now scripts are always replicated for their effects, and
                     never sending the script itself to slaves/AOF.
* Improvement: Big pipelining performances improved significantly.
* Fix: Rewrite BRPOPLPUSH as RPOPLPUSH to propagate.
* Fix: False positives in tests.
* Fix: Certain command flags were modified because not correct.
* Fix: Fix blocking XREAD for streams that are empty.
* Improvement: Allow scripts to timeout on slaves as well.
* Fix: Different corner cases due to CLIENT PAUSE are now fixed.
* Improvement: Optimize parsing large bulk greater than 32k.
* Fix: Propagate read-only scripts as SCRIPT LOAD, not as EVAL.

The following is the list of commits, so that you can read the details and
check the credits of the commits.

antirez in commit 1d1bf7f0:
 Document that effects replication is Redis 5 default.
 1 file changed, 8 insertions(+)

antirez in commit cfd969c7:
 Fix scripting tests now that we default to commands repl.
 1 file changed, 8 insertions(+), 1 deletion(-)

antirez in commit 3e1fb5ff:
 Use commands (effects) replication by default in scripts.
 3 files changed, 8 insertions(+), 1 deletion(-)

antirez in commit c6c71abe:
 Safer script stop condition on OOM.
 1 file changed, 5 insertions(+), 2 deletions(-)

antirez in commit dfbce91a:
 Propagate read-only scripts as SCRIPT LOAD.
 1 file changed, 16 insertions(+), 3 deletions(-)

antirez in commit 1705e42e:
 Don't perform eviction when re-entering the event loop.
 1 file changed, 7 insertions(+), 2 deletions(-)

antirez in commit a0dd6f82:
 Clarify why remaining may be zero in readQueryFromClient().
 1 file changed, 2 insertions(+)

zhaozhao.zz in commit 2eed31a5:
 networking: fix unexpected negative or zero readlen
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit 37fb606c:
 Merge branch '5.0' of github.com:/antirez/redis into 5.0
zhaozhao.zz in commit 1898e6ce:
 networking: optimize parsing large bulk greater than 32k
 1 file changed, 13 insertions(+), 10 deletions(-)

antirez in commit 82fc63d1:
 Unblocked clients API refactoring. See #4418.
 4 files changed, 33 insertions(+), 15 deletions(-)

zhaozhao.zz in commit 839bb52c:
 if master is already unblocked, do not unblock it twice
 1 file changed, 1 insertion(+), 1 deletion(-)

zhaozhao.zz in commit 2e1cd82d:
 fix multiple unblock for clientsArePaused()
 1 file changed, 3 insertions(+), 3 deletions(-)

antirez in commit 17233080:
 Make pending buffer processing safe for CLIENT_MASTER client.
 3 files changed, 22 insertions(+), 13 deletions(-)

antirez in commit 42bce87a:
 Test: processing of master stream in slave -BUSY state.
 1 file changed, 44 insertions(+)

antirez in commit 8bf42f60:
 After slave Lua script leaves busy state, re-process the master buffer.
 2 files changed, 5 insertions(+), 2 deletions(-)

antirez in commit c2b104c7:
 While the slave is busy, just accumulate master input.
 2 files changed, 6 insertions(+), 1 deletion(-)

antirez in commit 7b75f4ae:
 Allow scripts to timeout even if from the master instance.
 1 file changed, 6 insertions(+), 11 deletions(-)

antirez in commit adc4e031:
 Allow scripts to timeout on slaves as well.
 2 files changed, 10 insertions(+), 3 deletions(-)

dejun.xdj in commit 20ec1f0c:
 Revise the comments of latency command.
 1 file changed, 2 insertions(+), 1 deletion(-)

Chris Lamb in commit 8e5423eb:
 Correct "did not received" -> "did not receive" typos/grammar.
 6 files changed, 10 insertions(+), 10 deletions(-)

zhaozhao.zz in commit 395063d7:
 remove duplicate bind in sentinel.conf
 1 file changed, 10 deletions(-)

Salvatore Sanfilippo in commit b221ca41:
 Merge pull request #5300 from SaschaRoland/xread-block-5299
Sascha Roland in commit eea0d3c5:
 #5299 Fix blocking XREAD for streams that ran dry
 1 file changed, 2 insertions(+), 2 deletions(-)

antirez in commit 4cb9ee11:
 Add maxmemory slave behavior change in the change log.
 1 file changed, 8 insertions(+)

zhaozhao.zz in commit 5ad888ba:
 Supplement to PR #4835, just take info/memory/command as random commands
 1 file changed, 3 insertions(+), 3 deletions(-)

zhaozhao.zz in commit d928487f:
 some commands' flags should be set correctly, issue #4834
 1 file changed, 14 insertions(+), 14 deletions(-)

Oran Agra in commit af675f0a:
 Fix unstable tests on slow machines.
 3 files changed, 23 insertions(+), 17 deletions(-)

antirez in commit f2cd16be:
 Document slave-ignore-maxmemory in redis.conf.
 1 file changed, 20 insertions(+)

antirez in commit 02d729b4:
 Make slave-ignore-maxmemory configurable.
 1 file changed, 9 insertions(+)

antirez in commit 447da44d:
 Introduce repl_slave_ignore_maxmemory flag internally.
 3 files changed, 7 insertions(+)

antirez in commit 868b2925:
 Better variable meaning in processCommand().
 1 file changed, 2 insertions(+), 2 deletions(-)

antirez in commit 319f2ee6:
 Re-apply rebased #2358.
 1 file changed, 1 insertion(+), 1 deletion(-)

zhaozhao.zz in commit 22c166da:
 block: format code
 1 file changed, 2 insertions(+), 2 deletions(-)

zhaozhao.zz in commit c03c5913:
 block: rewrite BRPOPLPUSH as RPOPLPUSH to propagate
 3 files changed, 5 insertions(+), 1 deletion(-)

zhaozhao.zz in commit fcd5ef16:
 networking: make setProtocolError simple and clear
 1 file changed, 11 insertions(+), 13 deletions(-)

zhaozhao.zz in commit 656e4b2f:
 networking: just move qb_pos instead of sdsrange in processInlineBuffer
 1 file changed, 2 insertions(+), 3 deletions(-)

zhaozhao.zz in commit 2c7972ce:
 networking: just return C_OK if multibulk processing saw a <= 0 length.
 1 file changed, 2 insertions(+), 5 deletions(-)

zhaozhao.zz in commit 1203a04f:
 adjust qbuf to 26 in test case for client list
 1 file changed, 1 insertion(+), 1 deletion(-)

zhaozhao.zz in commit aff86fa1:
 pipeline: do not sdsrange querybuf unless all commands processed
 2 files changed, 48 insertions(+), 40 deletions(-)

Chris Lamb in commit 45a6c5be:
 Use SOURCE_DATE_EPOCH over unreproducible uname + date calls.
 1 file changed, 3 insertions(+)

Chris Lamb in commit 186df148:
 Make some defaults explicit in the sentinel.conf for package maintainers
 1 file changed, 25 insertions(+)

dejun.xdj in commit b59f04a0:
 Streams: ID of xclaim command starts from the sixth argument.
 1 file changed, 1 insertion(+), 1 deletion(-)

shenlongxing in commit a3f2437b:
 Fix stream command paras
 2 files changed, 7 insertions(+), 7 deletions(-)

antirez in commit df911235:
 Fix AOF comment to report the current behavior.
 1 file changed, 3 insertions(+), 1 deletion(-)



================================================================================
Redis 5.0 RC4     Released Fri Aug 03 13:51:02 CEST 2018
================================================================================

Upgrade urgency

    HIGH: Many non critical but important issues fixed.
    CRITICAL for Stream users: Many important bugs fixed.

Hi all, welcome to Redis 5.0 RC4.

This release is a huge step forward in Redis 5 maturity and fixes a number
of issues. It also provides interesting improvements. Here I'll summarize
the biggest one, but laster you can find the full list of commits:

Fixes:

* A number of fixes related to Streams: stability and correctnes.
* Fix dbRandomKey() potential infinite loop.
* Improve eviction LFU/LRU when keys are created by INCR commands family.
* Active defragmentation is now working on Redis 5.
* Fix corner case in Redis CLuster / Sentinel failover, by resetting the
  disconnection time with master in a more appropriate place.
* Use a private version of localtime() to avoid potential deadlocks.
* Different redis-cli non critical fixes.
* Fix rare replication stream corruption with disk-based replication.

Improvements:

* Sentinel: add an option to deny online script reconfiguration.
* Improved RESTORE command.
* Sentinel command renaming: allows to use Sentinel with Redis instances
  that have non standard command names.
* CLIENT ID and CLIENT UNBLOCK.
* CLIENT LIST now supports a TYPE option.
* redis-cli --cluster now supports authentication.
* redis-trib is now deprecated (use redis-cli --cluster).
* Better slaves output buffers efficiency.
* Faster INFO when there are many clients connected.
* Dynamic HZ feature.
* Improvements in what the MEMORY command is able to report.
* Add year in log. (WARNING: may be incompatible with log scraping tools)
* Lazy freeing now works even when values are overwritten (for instance SET).
* Faster ZADD when elements scores are updated.
* Improvements to the test suite, including many new options.

antirez in commit a4d1201e:
 Test suite: add --loop option.
 1 file changed, 12 insertions(+), 5 deletions(-)

antirez in commit 273d8191:
 Test suite: new --stop option.
 1 file changed, 13 insertions(+), 4 deletions(-)

antirez in commit fbbcc6a6:
 Streams IDs parsing refactoring.
 1 file changed, 32 insertions(+), 17 deletions(-)

antirez in commit 70c4bcb7:
 Test: new sorted set skiplist order consistency.
 1 file changed, 26 insertions(+)

antirez in commit 63addc5c:
 Fix zslUpdateScore() edge case.
 1 file changed, 2 insertions(+), 2 deletions(-)

antirez in commit 724740cc:
 More commenting of zslUpdateScore().
 1 file changed, 2 insertions(+)

antirez in commit ddc87eef:
 Explain what's the point of zslUpdateScore() in top comment.
 1 file changed, 5 insertions(+)

antirez in commit 741f29ea:
 Remove old commented zslUpdateScore() from source.
 1 file changed, 13 deletions(-)

antirez in commit 20116836:
 Optimize zslUpdateScore() as asked in #5179.
 1 file changed, 44 insertions(+)

antirez in commit 8c297e8b:
 zsetAdd() refactored adding zslUpdateScore().
 1 file changed, 18 insertions(+), 7 deletions(-)

dejun.xdj in commit bd2f3f6b:
 Streams: rearrange the usage of '-' and '+' IDs in stream commands.
 1 file changed, 13 insertions(+), 13 deletions(-)

dejun.xdj in commit c0c06b84:
 Streams: add mmid_supp argument in streamParseIDOrReply().
 1 file changed, 6 insertions(+), 2 deletions(-)

antirez in commit ab237a8e:
 Minor improvements to PR #5187.
 2 files changed, 13 insertions(+), 6 deletions(-)

Oran Agra in commit 1ce3cf7a:
 test suite conveniency improvements
 3 files changed, 79 insertions(+), 3 deletions(-)

Oran Agra in commit 36622899:
 add DEBUG LOG, to to assist test suite debugging
 1 file changed, 4 insertions(+)

antirez in commit 83d4311a:
 Cluster cron announce IP minor refactoring.
 1 file changed, 6 insertions(+), 3 deletions(-)

shenlongxing in commit a633f8e1:
 Fix cluster-announce-ip memory leak
 1 file changed, 3 insertions(+), 2 deletions(-)

antirez in commit 24c45538:
 Tranfer -> transfer typo fixed.
 1 file changed, 1 insertion(+), 1 deletion(-)

zhaozhao.zz in commit c609f240:
 refactor dbOverwrite to make lazyfree work
 4 files changed, 27 insertions(+), 12 deletions(-)

antirez in commit 9e971739:
 Refactoring: replace low-level checks with writeCommandsDeniedByDiskError().
 2 files changed, 6 insertions(+), 13 deletions(-)

antirez in commit 0e77cef0:
 Fix writeCommandsDeniedByDiskError() inverted return value.
 1 file changed, 2 insertions(+), 2 deletions(-)

antirez in commit acfe9d13:
 Better top comment for writeCommandsDeniedByDiskError().
 1 file changed, 8 insertions(+), 1 deletion(-)

antirez in commit 4e933e00:
 Introduce writeCommandsDeniedByDiskError().
 2 files changed, 24 insertions(+)

WuYunlong in commit 41607dfd:
 Consider aof write error as well as rdb in lua script.
 1 file changed, 14 insertions(+), 4 deletions(-)

Salvatore Sanfilippo in commit 1d073a64:
 Merge pull request #5168 from rpv-tomsk/issue-5033
Guy Korland in commit 2db31fd4:
 Few typo fixes
 1 file changed, 13 insertions(+), 13 deletions(-)

antirez in commit 64242757:
 Add year in log.
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit 50be4a1f:
 Document dynamic-hz in the example redis.conf.
 1 file changed, 16 insertions(+)

antirez in commit 9a76472d:
 Make dynamic hz actually configurable.
 1 file changed, 9 insertions(+)

antirez in commit a330d06c:
 Control dynamic HZ via server configuration.
 2 files changed, 13 insertions(+), 6 deletions(-)

antirez in commit d42602ff:
 Dynamic HZ: adapt cron frequency to number of clients.
 2 files changed, 17 insertions(+), 5 deletions(-)

antirez in commit 7b5f0223:
 Dynamic HZ: separate hz from the configured hz.
 3 files changed, 15 insertions(+), 9 deletions(-)

antirez in commit 037b00de:
 Remove useless conditional from emptyDb().
 1 file changed, 1 deletion(-)

antirez in commit 0e97ae79:
 Make emptyDb() change introduced in #4852 simpler to read.
 1 file changed, 8 insertions(+), 3 deletions(-)

zhaozhao.zz in commit f7740faf:
 optimize flushdb, avoid useless loops
 1 file changed, 5 insertions(+), 2 deletions(-)

zhaozhao.zz in commit 0c008376:
 Streams: fix xdel memory leak
 1 file changed, 1 insertion(+)

antirez in commit dc600a25:
 Example the magic +1 in migrateCommand().
 1 file changed, 4 insertions(+)

antirez in commit d6827ab6:
 Make changes of PR #5154 hopefully simpler.
 1 file changed, 10 insertions(+), 5 deletions(-)

WuYunlong in commit 89ec1453:
 Do not migrate already expired keys.
 1 file changed, 6 insertions(+), 2 deletions(-)

Pavel Rochnyack in commit cd25ed17:
 INFO CPU: higher precision of reported values
 1 file changed, 8 insertions(+), 8 deletions(-)

antirez in commit 6bfb4745:
 Streams: refactoring of next entry seek in the iterator.
 1 file changed, 11 insertions(+), 7 deletions(-)

zhaozhao.zz in commit 4724548e:
 Streams: skip master fileds only when we are going forward in streamIteratorGetID
 1 file changed, 8 insertions(+), 5 deletions(-)

Oran Agra in commit 4b79fdf1:
 fix slave buffer test suite false positives
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit a1e081f7:
 string2ll(): better commenting.
 1 file changed, 6 insertions(+)

dsomeshwar in commit 8b4fe752:
 removing redundant check
 1 file changed, 3 deletions(-)

antirez in commit 9e5bf047:
 Restore string2ll() to original version.
 1 file changed, 7 insertions(+), 2 deletions(-)

Oran Agra in commit c2ecdcde:
 fix recursion typo in zmalloc_usable
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit 4f742bd6:
 string2ll(): remove duplicated check for special case.
 1 file changed, 1 insertion(+), 6 deletions(-)

antirez in commit a4efac00:
 string2ll(): test for NULL pointer in all the cases.
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit 2c07c107:
 Change 42 to 1000 as warning level for cached scripts.
 1 file changed, 3 insertions(+), 3 deletions(-)

Itamar Haber in commit 270903d6:
 Adds Lua overheads to MEMORY STATS, smartens the MEMORY DOCTOR
 3 files changed, 30 insertions(+), 4 deletions(-)

Itamar Haber in commit faf3dbfc:
 Adds memory information about the script's cache to INFO
 3 files changed, 12 insertions(+)

antirez in commit 49841a54:
 Fix merge errors.
 2 files changed, 7 deletions(-)

antirez in commit 77a7ec72:
 Merge branch 'unstable' into 5.0 branch
antirez in commit 4ff47a0b:
 Top comment clientsCron().
 1 file changed, 19 insertions(+), 4 deletions(-)

antirez in commit aba68552:
 Clarify that clientsCronTrackExpansiveClients() indexes may jump ahead.
 1 file changed, 9 insertions(+), 1 deletion(-)

antirez in commit be88c0b1:
 Rename INFO CLIENT max buffers field names for correctness.
 1 file changed, 2 insertions(+), 2 deletions(-)

antirez in commit 0cf3794e:
 Fix wrong array index variable in getExpansiveClientsInfo().
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit ea3a20c5:
 Change INFO CLIENTS sections to report pre-computed max/min client buffers.
 1 file changed, 5 insertions(+), 5 deletions(-)

antirez in commit 8f7e496b:
 Rename var in clientsCronTrackExpansiveClients() for clarity.
 1 file changed, 3 insertions(+), 3 deletions(-)

antirez in commit 8d617596:
 Implement a function to retrieve the expansive clients mem usage.
 1 file changed, 12 insertions(+)

antirez in commit 85a1b4f8:
 clientsCronTrackExpansiveClients() actual implementation.
 1 file changed, 14 insertions(+), 1 deletion(-)

antirez in commit d4c5fc57:
 clientsCronTrackExpansiveClients() skeleton and ideas.
 1 file changed, 23 insertions(+)

antirez in commit 1c95c075:
 Make vars used only by INFO CLIENTS local to the block.
 1 file changed, 1 insertion(+), 1 deletion(-)

Salvatore Sanfilippo in commit 16b8d364:
 Merge pull request #4727 from kingpeterpaule/redis-fix-info-cli
antirez in commit 0aca977c:
 Merge branch 'unstable' of github.com:/antirez/redis into unstable
antirez in commit 313b2240:
 In addReplyErrorLength() only panic when replying to slave.
 1 file changed, 4 insertions(+), 3 deletions(-)

antirez in commit 6183f059:
 Refine comment in addReplyErrorLength() about replying to masters/slaves.
 1 file changed, 11 insertions(+)

Salvatore Sanfilippo in commit 22e9321c:
 Merge pull request #5138 from oranagra/improve_defrag_test
Oran Agra in commit f89c93c8:
 make active defrag test more stable
 2 files changed, 6 insertions(+), 5 deletions(-)

Salvatore Sanfilippo in commit 8213f64d:
 Merge pull request #5122 from trevor211/allowWritesWhenAofDisabled
Salvatore Sanfilippo in commit 46fd9278:
 Merge pull request #4237 from aspirewit/update-comment
antirez in commit 6201f7b4:
 Streams: better error when $ is given with XREADGROUP.
 1 file changed, 5 insertions(+), 2 deletions(-)

Salvatore Sanfilippo in commit 4bff45c7:
 Merge pull request #5136 from 0xtonyxia/fix-xread-id-parse
antirez in commit afc7e08a:
 Panic when we are sending an error to our master/slave.
 1 file changed, 5 insertions(+)

Salvatore Sanfilippo in commit e03358c0:
 Merge pull request #5135 from oranagra/rare_repl_corruption
dejun.xdj in commit 846cf12a:
 Streams: remove meaningless if condition.
 1 file changed, 1 insertion(+), 1 deletion(-)

dejun.xdj in commit 6501b6bb:
 Streams: return an error message if using xreadgroup with '$' ID.
 1 file changed, 5 insertions(+)

Oran Agra in commit d5559898:
 fix rare replication stream corruption with disk-based replication
 3 files changed, 18 insertions(+), 9 deletions(-)

antirez in commit cefe21d2:
 dict.c: remove a few trailing spaces.
 1 file changed, 2 insertions(+), 2 deletions(-)

Salvatore Sanfilippo in commit 4fc20992:
 Merge pull request #5128 from kingpeterpaule/remove-one-loop-in-freeMemoryIfNeeded
Salvatore Sanfilippo in commit 9fbd49bb:
 Merge pull request #5113 from 0xtonyxia/using-compare-func-instead
Salvatore Sanfilippo in commit cab39676:
 Merge pull request #5127 from oranagra/sds_req_type
antirez in commit f9c84d6d:
 Hopefully improve commenting of #5126.
 2 files changed, 22 insertions(+), 10 deletions(-)

Salvatore Sanfilippo in commit e22a1218:
 Merge pull request #5126 from oranagra/slave_buf_memory_2
Salvatore Sanfilippo in commit 28dd8dd1:
 Merge pull request #5132 from soloestoy/propagate-xdel-correctly
Oran Agra in commit bf680b6f:
 slave buffers were wasteful and incorrectly counted causing eviction
 10 files changed, 182 insertions(+), 50 deletions(-)

zhaozhao.zz in commit 73306c6f:
 Streams: correctly propagate xdel if needed
 1 file changed, 7 insertions(+), 3 deletions(-)

antirez in commit 103c5a1a:
 Add a few comments to streamIteratorRemoveEntry().
 1 file changed, 4 insertions(+)

Salvatore Sanfilippo in commit a317f55d:
 Merge pull request #5131 from soloestoy/optimize-xdel
antirez in commit 185e0d9c:
 Modify XINFO field from last-id to last-generated-id.
 1 file changed, 1 insertion(+), 1 deletion(-)

Salvatore Sanfilippo in commit 4215e74b:
 Merge pull request #5129 from soloestoy/xinfo-show-last-id
zhaozhao.zz in commit c9324f81:
 Streams: free lp if all elements are deleted
 1 file changed, 9 insertions(+), 4 deletions(-)

paule in commit b6ce7d5d:
 Update dict.c
 1 file changed, 4 insertions(+), 2 deletions(-)

zhaozhao.zz in commit b4ba5ac8:
 Streams: show last id for streams and groups
 1 file changed, 6 insertions(+), 2 deletions(-)

peterpaule in commit 816fc6cb:
 remove one ineffective loop in dictGetSomeKeys.
 1 file changed, 1 insertion(+), 1 deletion(-)

Oran Agra in commit b05a22e2:
 bugfix in sdsReqType creating 64bit sds headers on 32bit systems
 1 file changed, 3 insertions(+), 1 deletion(-)

dejun.xdj in commit 491682a6:
 Streams: using streamCompareID() instead of direct compare in block.c.
 1 file changed, 1 insertion(+), 4 deletions(-)

dejun.xdj in commit a2177cd2:
 Streams: add streamCompareID() declaration in stream.h.
 1 file changed, 1 insertion(+)

dejun.xdj in commit 0484dbcf:
 Streams: using streamCompareID() instead of direct compare.
 1 file changed, 2 insertions(+), 6 deletions(-)

WuYunlong in commit 2d4366c5:
 Accept write commands if persisting is disabled, event if we do have problems persisting on disk previously.
 1 file changed, 2 insertions(+), 1 deletion(-)

Salvatore Sanfilippo in commit ab33bcd3:
 Merge pull request #5120 from andrewsensus/leap-year-comment-patch-1
antirez in commit 2352a519:
 Test: XDEL fuzz testing. Remove and check stage.
 1 file changed, 15 insertions(+)

antirez in commit 3d7d20b7:
 Test: fix lshuffle by providing the "K" combinator.
 1 file changed, 2 insertions(+)

antirez in commit 967ad364:
 Test: add lshuffle in the Tcl utility functions set.
 1 file changed, 14 insertions(+)

antirez in commit d6efd5fc:
 Test: XDEL fuzz testing, stream creation.
 1 file changed, 20 insertions(+)

andrewsensus in commit 8dc08ae2:
 update leap year comment
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit 69997153:
 Merge branch 'unstable' of github.com:/antirez/redis into unstable
antirez in commit a93f8f09:
 Test: XDEL basic test.
 1 file changed, 12 insertions(+)

Salvatore Sanfilippo in commit a44a5934:
 Merge pull request #5119 from trevor211/fixSlowlogConfig
WuYunlong in commit d6ba4fd5:
 Fix config set slowlog-log-slower-than and condition in createLatencyReport
 2 files changed, 2 insertions(+), 2 deletions(-)

WuYunlong in commit b3660be8:
 Add test in slowlog.tcl
 1 file changed, 10 insertions(+)

artix in commit d4182a0a:
 Cluster Manager: more checks on --cluster-weight option.
 1 file changed, 12 insertions(+), 2 deletions(-)

artix in commit d222eda9:
 Redis-trib deprecated: it no longer works and it outputs a warning to the user.
 1 file changed, 103 insertions(+), 1804 deletions(-)

artix in commit 513eb572:
 Cluster Manager: auth support (-a argument).
 1 file changed, 41 insertions(+), 19 deletions(-)

Salvatore Sanfilippo in commit f3980bb9:
 Merge pull request #5115 from shenlongxing/patch-1
Shen Longxing in commit c2a85fb3:
 Delete unused role checking.
 1 file changed, 2 insertions(+), 6 deletions(-)

Salvatore Sanfilippo in commit 4cb5bd4e:
 Merge pull request #4820 from charpty/wip-serverc-simplify
antirez in commit 8d6b7861:
 Add regression test for #5111.
 1 file changed, 15 insertions(+)

antirez in commit b6260a02:
 Streams: when re-delivering because of SETID, reset deliveries counter.
 1 file changed, 2 insertions(+), 2 deletions(-)

antirez in commit a7c180e5:
 Simplify duplicated NACK #5112 fix.
 1 file changed, 18 insertions(+), 21 deletions(-)

Salvatore Sanfilippo in commit bf4def0f:
 Merge pull request #5112 from 0xtonyxia/fix-xreadgroup-crash-after-setid
Salvatore Sanfilippo in commit 16770551:
 Merge pull request #5114 from oranagra/defrag_32
Oran Agra in commit 920158ec:
 Active defrag fixes for 32bit builds (again)
 1 file changed, 2 insertions(+), 2 deletions(-)

Salvatore Sanfilippo in commit f45e7901:
 Merge pull request #4967 from JingchengLi/unstable
tengfeng in commit 9505dd20:
 fix repeat argument issue and reduce unnessary loop times for redis-cli.
 1 file changed, 12 insertions(+), 7 deletions(-)

antirez in commit 0420c327:
 Merge branch 'unstable' of github.com:/antirez/redis into unstable
antirez in commit 28e95c7c:
 Streams: fix typo "consumer".
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit a8c1bb31:
 Streams: fix new XREADGROUP sync logic.
 1 file changed, 13 insertions(+), 3 deletions(-)

antirez in commit 1a02b5f6:
 Streams: make blocking for > a truly special case.
 1 file changed, 29 insertions(+), 4 deletions(-)

antirez in commit a71e8148:
 Streams: send an error to consumers blocked on non-existing group.
 1 file changed, 5 insertions(+), 1 deletion(-)

antirez in commit 09327f11:
 Streams: fix unblocking logic into a consumer group.
 1 file changed, 24 insertions(+), 14 deletions(-)

dejun.xdj in commit 3f8a3efe:
 Streams: fix xreadgroup crash after xgroup SETID is sent.
 1 file changed, 20 insertions(+), 15 deletions(-)

Salvatore Sanfilippo in commit 7239e9ca:
 Merge pull request #5095 from 0xtonyxia/fix-indentation
dejun.xdj in commit 61f12973:
 Bugfix: PEL is incorrect when consumer is blocked using xreadgroup with NOACK option.
 4 files changed, 6 insertions(+), 1 deletion(-)

antirez in commit b67f0276:
 redis-cli: fix #4990 additional argument in help.
 1 file changed, 1 insertion(+)

antirez in commit 18d65849:
 redis-cli: fix #5096 double error message.
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit 84620327:
 redis-cli: cliConnect() flags CC_FORCE and CC_QUIET.
 1 file changed, 23 insertions(+), 13 deletions(-)

Amit Dey in commit a3a5a25f:
 fixing broken link in CONTRIBUTING
 1 file changed, 1 insertion(+), 1 deletion(-)

dejun.xdj in commit 289d8d9c:
 CLIENT UNBLOCK: fix client unblock help message.
 1 file changed, 1 insertion(+), 1 deletion(-)

minkikim89 in commit 62a4a8c1:
 fix whitespace in redis-cli.c
 1 file changed, 362 insertions(+), 362 deletions(-)

WuYunlong in commit 0a5805d7:
 fix compile warning in addReplySubcommandSyntaxError
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit cb78c842:
 Use nolocks_localtime() for safer logging.
 2 files changed, 8 insertions(+), 2 deletions(-)

antirez in commit 81778d91:
 Cache timezone and daylight active flag for safer logging.
 2 files changed, 14 insertions(+), 1 deletion(-)

antirez in commit 18d8205b:
 Localtime: clarify is_leap_year() working with comments.
 1 file changed, 4 insertions(+), 4 deletions(-)

antirez in commit 29644144:
 Localtime: fix comment about leap year.
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit 0ea39aa4:
 Localtime: fix daylight saving adjustment. Use * not +.
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit 6614d305:
 Localtime: fix daylight time documentation and computation.
 1 file changed, 14 insertions(+), 4 deletions(-)

dejun.xdj in commit 46f5a2ca:
 Fix indentation.
 2 files changed, 14 insertions(+), 14 deletions(-)

antirez in commit 243c5a7a:
 Localtime: add a test main() function to check the output.
 1 file changed, 15 insertions(+), 1 deletion(-)

antirez in commit c25ee35a:
 Localtime: day of month is 1 based. Convert from 0 based "days".
 1 file changed, 2 insertions(+), 2 deletions(-)

antirez in commit b9f33830:
 Localtime: fix timezone adjustment.
 1 file changed, 2 insertions(+), 1 deletion(-)

antirez in commit 0c12cbed:
 Localtime: compute year, month and day of the month.
 1 file changed, 26 insertions(+)

antirez in commit 06ca400f:
 Localtime: basics initial calculations. Year missing.
 1 file changed, 30 insertions(+), 2 deletions(-)

antirez in commit 6a529067:
 Localtime function skeleton and file added.
 1 file changed, 44 insertions(+)

Jack Drogon in commit 93238575:
 Fix typo
 40 files changed, 99 insertions(+), 99 deletions(-)

antirez in commit 94b3ee61:
 Clarify the pending_querybuf field of clients.
 1 file changed, 4 insertions(+), 3 deletions(-)

antirez in commit 549b8b99:
 Improve style of PR #5084.
 1 file changed, 8 insertions(+), 2 deletions(-)

Salvatore Sanfilippo in commit 526b30a7:
 Merge pull request #5084 from chendq8/pending-querybuf
antirez in commit 677d10b2:
 Set repl_down_since to zero on state change.
 1 file changed, 2 insertions(+), 1 deletion(-)

Salvatore Sanfilippo in commit 02e38516:
 Merge pull request #5081 from trevor211/fixClusterFailover
chendianqiang in commit cbb2ac07:
 Merge branch 'unstable' into pending-querybuf
antirez in commit 2edcafb3:
 addReplySubSyntaxError() renamed to addReplySubcommandSyntaxError().
 12 files changed, 14 insertions(+), 14 deletions(-)

Salvatore Sanfilippo in commit bc6a0045:
 Merge pull request #4998 from itamarhaber/module_command_help
Salvatore Sanfilippo in commit ee09b5ed:
 Merge pull request #5071 from akshaynagpal/patch-2
Salvatore Sanfilippo in commit f03ad962:
 Merge pull request #5068 from shenlongxing/fix-rename-command
Salvatore Sanfilippo in commit e4881cd0:
 Merge pull request #5090 from trevor211/test_helper_tcl
WuYunlong in commit 2833cfbe:
 fix tests/test_helper.tcl with --wait-server option. Issue #5063 added --wait-server option, but can not work.
 1 file changed, 1 deletion(-)

chendianqiang in commit 7de1ada0:
 limit the size of pending-querybuf in masterclient
 4 files changed, 48 insertions(+)

WuYunlong in commit 2e167f7d:
 fix server.repl_down_since resetting, so that slaves could failover automatically as expected.
 1 file changed, 1 insertion(+), 1 deletion(-)

WuYunlong in commit aeb7bc3e:
 cluster.tcl: Add master consecutively down test.
 1 file changed, 77 insertions(+)

antirez in commit d751d98b:
 Change CLIENT LIST TYPE help string.
 1 file changed, 2 insertions(+), 2 deletions(-)

Salvatore Sanfilippo in commit a0b05a04:
 Merge pull request #5075 from soloestoy/client-list-types
Salvatore Sanfilippo in commit aa2c390e:
 Merge pull request #5074 from soloestoy/fix-compile-warning
Salvatore Sanfilippo in commit a4ef94d2:
 Merge pull request #5076 from 0xtonyxia/add-no-auth-warning-option
dejun.xdj in commit 9f185626:
 Check if password is used on command line interface.
 1 file changed, 1 insertion(+), 1 deletion(-)

dejun.xdj in commit 1139070a:
 Fix trailing white space.
 1 file changed, 1 insertion(+), 1 deletion(-)

dejun.xdj in commit bbd0ca95:
 Fix code format issue.
 1 file changed, 4 insertions(+), 4 deletions(-)

dejun.xdj in commit 7becf54e:
 Don't output password warning message when --no-auth-warning is used.
 1 file changed, 10 insertions(+), 1 deletion(-)

dejun.xdj in commit bde05e9c:
 Avoid -Woverlength-strings compile warning.
 1 file changed, 5 insertions(+), 3 deletions(-)

antirez in commit 5baf50d8:
 Rax library updated (node callback).
 2 files changed, 19 insertions(+), 5 deletions(-)

dejun.xdj in commit 0b74fd67:
 Add --no-auth-warning help message.
 1 file changed, 2 insertions(+)

zhaozhao.zz in commit b9cbd04b:
 clients: add type option for client list
 4 files changed, 20 insertions(+), 6 deletions(-)

zhaozhao.zz in commit f5538642:
 clients: show pubsub flag in client list
 1 file changed, 1 insertion(+)

zhaozhao.zz in commit 1fcf2737:
 fix some compile warnings
 2 files changed, 2 insertions(+), 2 deletions(-)

Akshay Nagpal in commit 007e3cbd:
 Added link to Google Group
 1 file changed, 3 insertions(+), 1 deletion(-)

antirez in commit ab55f9da:
 Make CLIENT HELP output nicer to the eyes.
 1 file changed, 11 insertions(+), 11 deletions(-)

antirez in commit 75f1a7bd:
 Merge branch 'unstable' of github.com:/antirez/redis into unstable
antirez in commit 4a70ff74:
 Add unblock in CLIENT HELP.
 1 file changed, 1 insertion(+)

shenlongxing in commit 3c27db1c:
 fix empty string for sentinel rename-command
 1 file changed, 5 insertions(+)

Salvatore Sanfilippo in commit f7b21bc7:
 Merge pull request #5066 from oranagra/defrag_jemalloc5_fix
Salvatore Sanfilippo in commit 730a4cfa:
 Merge pull request #5067 from mpaltun/mpaltun-doc-fix
antirez in commit 2214043b:
 CLIENT UNBLOCK: support unblocking by error.
 1 file changed, 22 insertions(+), 3 deletions(-)

Mustafa Paltun in commit 010dc172:
 Update t_stream.c
 1 file changed, 2 insertions(+), 2 deletions(-)

Mustafa Paltun in commit 6d0acb33:
 Update help.h
 1 file changed, 1 insertion(+), 1 deletion(-)

Oran Agra in commit de495ee7:
 minor fix in creating a stream NACK for rdb and defrag tests
 2 files changed, 2 insertions(+), 2 deletions(-)

antirez in commit 71295ee3:
 CLIENT UNBLOCK implemented.
 1 file changed, 22 insertions(+)

antirez in commit fb39bfd7:
 Take clients in a ID -> Client handle dictionary.
 3 files changed, 6 insertions(+)

antirez in commit ed65d734:
 CLIENT ID implemented.
 1 file changed, 4 insertions(+)

Salvatore Sanfilippo in commit 345b4809:
 Merge pull request #5063 from oranagra/test_suite_improvements
Salvatore Sanfilippo in commit 35c5f3fa:
 Merge pull request #5065 from oranagra/defrag_jemalloc5
Oran Agra in commit 5616d4c6:
 add active defrag support for streams
 6 files changed, 230 insertions(+), 25 deletions(-)

Oran Agra in commit e8099cab:
 add defrag hint support into jemalloc 5
 3 files changed, 43 insertions(+)

Oran Agra in commit 751eea24:
 test suite infra improvements and fix
 2 files changed, 19 insertions(+)

Salvatore Sanfilippo in commit bb666d44:
 Merge pull request #5027 from tigertv/unstable
antirez in commit b9058c73:
 Merge branch 'unstable' of github.com:/antirez/redis into unstable
antirez in commit 43831779:
 Sentinel: test command renaming feature.
 1 file changed, 10 insertions(+)

Salvatore Sanfilippo in commit eb052ba9:
 Merge pull request #5059 from guybe7/fix_restore_warning
antirez in commit 27178a3f:
 Fix type of argslen in sendSynchronousCommand().
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit 1f1e724f:
 Remove black space.
 1 file changed, 1 insertion(+), 1 deletion(-)

Salvatore Sanfilippo in commit aa5eaad4:
 Merge pull request #5037 from madolson/repl-auth-fix
antirez in commit 3cf8dd2c:
 Sentinel: fix SENTINEL SET error reporting.
 1 file changed, 18 insertions(+), 9 deletions(-)

Madelyn Olson in commit 45731edc:
 Addressed comments
 1 file changed, 1 insertion(+), 1 deletion(-)

Madelyn Olson in commit e8d68b6b:
 Fixed replication authentication with whitespace in password
 1 file changed, 12 insertions(+), 5 deletions(-)

antirez in commit fc0c9c80:
 Sentinel: drop the renamed-command entry in a more natural way.
 1 file changed, 4 insertions(+), 7 deletions(-)

antirez in commit 8ba670f5:
 Sentinel command renaming: document it into sentinel.conf.
 1 file changed, 19 insertions(+)

antirez in commit a8a76bda:
 Merge branch 'unstable' of github.com:/antirez/redis into unstable
antirez in commit 2358de68:
 Sentinel command renaming: use case sensitive hashing for the dict.
 1 file changed, 2 insertions(+), 1 deletion(-)

antirez in commit a9c50088:
 Sentinel command renaming: fix CONFIG SET event logging.
 1 file changed, 17 insertions(+), 1 deletion(-)

antirez in commit b72cecd7:
 Sentinel command renaming: fix CONFIG SET after refactoring.
 1 file changed, 5 insertions(+), 5 deletions(-)

antirez in commit 91a384a5:
 Sentinel command renaming: implement SENTINEL SET.
 1 file changed, 19 insertions(+)

antirez in commit 903582dd:
 Sentinel: make SENTINEL SET able to handle different arities.
 1 file changed, 19 insertions(+), 12 deletions(-)

antirez in commit c303e768:
 Sentinel command renaming: config rewriting.
 1 file changed, 12 insertions(+)

antirez in commit 60df7dbe:
 Sentinel command renaming: rename-command option parsing.
 1 file changed, 11 insertions(+)

antirez in commit 72e8a33b:
 Sentinel command renaming: base machanism implemented.
 1 file changed, 64 insertions(+), 15 deletions(-)

Guy Benoish in commit dfcc20f4:
 Fix compiler warning in restoreCommand
 1 file changed, 1 insertion(+), 1 deletion(-)

Salvatore Sanfilippo in commit cf7fcdbe:
 Merge pull request #4634 from soloestoy/special-auth
Salvatore Sanfilippo in commit 70b7fa2c:
 Merge pull request #5049 from youjiali1995/fix-load-rdb
Salvatore Sanfilippo in commit 54d66d39:
 Merge pull request #5053 from michael-grunder/zpopminmax-keypos
Salvatore Sanfilippo in commit 199e704a:
 Merge pull request #5050 from shenlongxing/fix-typo
michael-grunder in commit db6b99f9:
 Update ZPOPMIN/ZPOPMAX command declaration
 1 file changed, 2 insertions(+), 2 deletions(-)

Salvatore Sanfilippo in commit a16aa03a:
 Merge pull request #5051 from oranagra/streams_mem_estimate
Oran Agra in commit 20e10dc7:
 fix streams memory estimation, missing raxSeek
 1 file changed, 2 insertions(+), 1 deletion(-)

shenlongxing in commit ec55df11:
 fix typo
 4 files changed, 4 insertions(+), 4 deletions(-)

youjiali1995 in commit df6644fe:
 Fix rdbLoadIntegerObject() to create shared objects when needed.
 1 file changed, 1 insertion(+), 1 deletion(-)

Salvatore Sanfilippo in commit 1527bcad:
 Merge pull request #5036 from bepahol/unstable
Salvatore Sanfilippo in commit c1e82405:
 Merge pull request #5039 from oranagra/rdb_dbsize_hint
Salvatore Sanfilippo in commit 79f55eed:
 Merge pull request #5040 from oranagra/memrev64ifbe_fix
Salvatore Sanfilippo in commit c6f4118c:
 Merge pull request #5045 from guybe7/restore_fix
Guy Benoish in commit b5197f1f:
 Enhance RESTORE with RDBv9 new features
 5 files changed, 100 insertions(+), 22 deletions(-)

Salvatore Sanfilippo in commit c6fdebf5:
 Merge pull request #5042 from oranagra/malloc_usable_size_libc
Oran Agra in commit 482785ac:
 add malloc_usable_size for libc malloc
 2 files changed, 8 insertions(+), 3 deletions(-)

Salvatore Sanfilippo in commit 4da29630:
 Merge pull request #5023 from FX-HAO/unstable
antirez in commit e7219025:
 Test RDB stream encoding saving/loading.
 1 file changed, 17 insertions(+)

Salvatore Sanfilippo in commit 5f5e1199:
 Merge pull request #5041 from oranagra/redis-rdb-check_rdbLoadMillisecondTime
antirez in commit 4848fbec:
 Modules: convert hash to hash table for big objects.
 1 file changed, 3 insertions(+)

Oran Agra in commit f31b0405:
 fix redis-rdb-check to provide proper arguments to rdbLoadMillisecondTime
 2 files changed, 3 insertions(+), 2 deletions(-)

antirez in commit 333c98c4:
 AOF: remove no longer used variable "now".
 1 file changed, 1 deletion(-)

antirez in commit e94b2053:
 Modify clusterRedirectClient() to handle ZPOP and XREAD.
 1 file changed, 5 insertions(+), 1 deletion(-)

Oran Agra in commit 26229aa6:
 use safe macro (non empty) in memrev64ifbe to eliminate empty if warning
 1 file changed, 3 insertions(+), 3 deletions(-)

Oran Agra in commit 5cd3c952:
 64 bit RDB_OPCODE_RESIZEDB in rdb saving
 1 file changed, 3 insertions(+), 7 deletions(-)

antirez in commit ba92b517:
 Remove AOF optimization to skip expired keys.
 1 file changed, 3 deletions(-)

Benjamin Holst in commit 36524060:
 Update README.md
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit 44571088:
 Merge branch 'unstable' of github.com:/antirez/redis into unstable
antirez in commit 6967d0bd:
 Revert fix #4976 just leaving the flush() part.
 1 file changed, 1 insertion(+), 5 deletions(-)

antirez in commit 0ed0dc3c:
 Fix incrDecrCommand() to create shared objects when needed.
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit bd92389c:
 Refactor createObjectFromLongLong() to be suitable for value objects.
 2 files changed, 33 insertions(+), 2 deletions(-)

Salvatore Sanfilippo in commit 3518bb66:
 Merge pull request #5020 from shenlongxing/fix-config
antirez in commit 20766608:
 Streams: fix xreadGetKeys() for correctness.
 1 file changed, 19 insertions(+), 5 deletions(-)

Salvatore Sanfilippo in commit e670ccff:
 Merge pull request #4857 from youjiali1995/fix-command-getkeys
antirez in commit a0b27dae:
 Streams: fix xreadGetKeys() buffer overflow.
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit 62f9ac6f:
 Streams: Change XADD MAXLEN handling of values <= 0.
 1 file changed, 3 insertions(+), 3 deletions(-)

Max Vetrov in commit d4c4f20a:
 Update sort.c
 1 file changed, 1 insertion(+), 3 deletions(-)

antirez in commit 79a1c19a:
 XADD MAXLEN should return an error for values < 0.
 1 file changed, 5 insertions(+)

Salvatore Sanfilippo in commit 2e0ab4a8:
 Merge pull request #4976 from trevor211/fixDebugLoadaof
Salvatore Sanfilippo in commit 94658303:
 Merge pull request #4758 from soloestoy/rdb-save-incremental-fsync
antirez in commit 6a66b93b:
 Sentinel: add an option to deny online script reconfiguration.
 2 files changed, 41 insertions(+)

antirez in commit d353023a:
 Merge branch 'unstable' of github.com:/antirez/redis into unstable
antirez in commit d6e8fe77:
 Fix infinite loop in dbRandomKey().
 1 file changed, 13 insertions(+)

Salvatore Sanfilippo in commit 40d5df65:
 Merge pull request #5008 from zwkno1/unstable
Salvatore Sanfilippo in commit 8bc3ffcb:
 Merge pull request #5021 from soloestoy/fix-exists
Salvatore Sanfilippo in commit 6c7847a1:
 Merge pull request #5018 from soloestoy/optimize-reply
antirez in commit 1e92fde3:
 Fix SCAN bug regression test, avoiding empty SREM call.
 1 file changed, 1 insertion(+), 1 deletion(-)

Fuxin Hao in commit a4f658b2:
 Fix update_zmalloc_stat_alloc in zrealloc
 1 file changed, 1 insertion(+), 1 deletion(-)

================================================================================
Redis 5.0 RC3     Released Wed Jun 14 9:51:44 CEST 2018
================================================================================

Upgrade urgency LOW:

This release fixes compilation of Redis RC2. For an error the commit from unstable
updating the Rax library was not merged into the 5.0 branch.

================================================================================
Redis 5.0 RC2     Released Wed Jun 13 12:49:13 CEST 2018
================================================================================

Upgrade urgency CRITICAL: This release fixes important security issues.
                    HIGH: This release fixes a SCAN commands family bug.
                MODERATE: This release fixes a PSYNC2 edge case with expires.
                MODERATE: Sentinel related fixes.
                     LOW: All the other issues

NOTE: This release breaks API compatibility with certain APIs that were
introduced in Redis 5.0 RC1. Notably ZPOP* now returns score/element in reverse
order. XINFO <key> special form was removed, now XINFO STREAM <key> must be
used to obtain general information about the stream.

Redis 5.0 RC2 ixes a number of important issues:

* Important security issues related to the Lua scripting engine.
  Please check https://github.com/antirez/redis/issues/5017
  for more information.

* A bug with SCAN, SSCAN, HSCAN and ZSCAN, that may not return all the elements.
  We also add a regression test that can trigger the issue often when present, and
  may in theory be able to find unrelated regressions.

* A PSYNC2 bug is fixed: Redis should not expire keys when saving RDB files
  because otherwise it is no longer possible to use such RDB file as a base
  for partial resynchronization. It no longer represents the right state.

* Compatibility of AOF with RDB preamble when the RDB checksum is disabled.

* Sentinel bug that in some cases prevented Sentinel to detect that the master
  was down immediately. A delay was added to the detection.

* XREADGROUP would crash when the master had attacked slaves.

* Replication and events generation of several streams command were fixed.

* XREVRANGE fixed, in some cases it could not return elements, or crash the
  server, or in general not behave correctly.

* ZPOP can now unblock multiple clients in a sane way.

* Other minor issues.

Moreover this release adds new features:

* XGROUP DESTROY and XGROUP SETID.

* RDB loading speedup.

* Configurable stream macro node limits (number of elements / bytes).

* More smaller improvements.

The following is the list of commits composing the release, please check
the commit messages and authors for credits.

antirez in commit 9fdcc159:
 Security: fix redis-cli buffer overflow.
 1 file changed, 16 insertions(+), 11 deletions(-)

antirez in commit cf760071:
 Security: fix Lua struct package offset handling.
 1 file changed, 6 insertions(+), 2 deletions(-)

antirez in commit a57595ca:
 Security: more cmsgpack fixes by @soloestoy.
 1 file changed, 7 insertions(+)

antirez in commit 8783fb94:
 Security: update Lua struct package for security.
 1 file changed, 23 insertions(+), 23 deletions(-)

antirez in commit 8cb9344b:
 Security: fix Lua cmsgpack library stack overflow.
 1 file changed, 3 insertions(+)

赵磊 in commit 59080f60:
 Fix dictScan(): It can't scan all buckets when dict is shrinking.
 1 file changed, 14 insertions(+), 11 deletions(-)

dejun.xdj in commit ac2a824a:
 Fix redis-cli memory leak when sending set preference command.
 1 file changed, 2 insertions(+)

dejun.xdj in commit c7197ff5:
 Check if the repeat value is positive in while loop of cliSendCommand().
 1 file changed, 1 insertion(+), 1 deletion(-)

dejun.xdj in commit 3f77777f:
 Change the type of repeat argument to long for function cliSendCommand.
 1 file changed, 1 insertion(+), 1 deletion(-)

dejun.xdj in commit 7a565d72:
 Fix negtive repeat command value issue.
 1 file changed, 11 insertions(+), 3 deletions(-)

dejun.xdj in commit 64bf60fb:
 Detect and stop saving history for auth command with repeat option.
 1 file changed, 17 insertions(+), 10 deletions(-)

dejun.xdj in commit 5bed12aa:
 Change the warning message a little bit to avoid trademark issuses.
 1 file changed, 1 insertion(+), 1 deletion(-)

dejun.xdj in commit d71c4961:
 Stop saving auth command in redis-cli history.
 1 file changed, 4 insertions(+), 2 deletions(-)

dejun.xdj in commit fca99e41:
 Add warning message when using password on command line
 1 file changed, 1 insertion(+)

antirez in commit 01407a3a:
 Don't expire keys while loading RDB from AOF preamble.
 3 files changed, 5 insertions(+), 5 deletions(-)

WuYunlong in commit fb5408cf:
 Fix rdb save by allowing dumping of expire keys, so that when we add a new slave, and do a failover, eighter by manual or not, other local slaves will delete the expired keys properly.
 2 files changed, 3 insertions(+), 7 deletions(-)

antirez in commit 0b8b6df4:
 Backport hiredis issue 525 fix to compile on FreeBSD.
 1 file changed, 1 insertion(+), 1 deletion(-)

antirez in commit e98627c5:
 Add INIT INFO to the provided init script.
 1 file changed, 8 insertions(+)

antirez in commit 17f5de89:
 Fix ae.c when a timer finalizerProc adds an event.
 2 files changed, 10 insertions(+), 6 deletions(-)

antirez in commit 266e6423:
 Sentinel: fix delay in detecting ODOWN.
 1 file changed, 9 insertions(+), 5 deletions(-)

zhaozhao.zz in commit eafaf172:
 AOF & RDB: be compatible with rdbchecksum no
 1 file changed, 9 insertions(+), 7 deletions(-)

huijing.whj in commit 4630da37:
 fix int overflow problem in freeMemoryIfNeeded
 1 file changed, 1 insertion(+), 1 deletion(-)

================================================================================
Redis 5.0 RC1   Released Tue May 29 14:14:11 CEST 2018
================================================================================

Upgrade urgency LOW: This is the first RC of Redis 5.

Introduction to the Redis 5 release
===================================

Redis 5 is a release focused on a few important features. While Redis 4
was very very focused on operations, Redis 5 changes are mostly user-facing,
with the implementation of new data types and operations on top of existing
types. The following are the major features of this release:

1. The new Stream data type. https://redis.io/topics/streams-intro
2. New Redis modules APIs: Timers, Cluster and Dictionary APIs.
3. RDB now store LFU and LRU information.
4. The cluster manager was ported from Ruby (redis-trib.rb) to C code
   inside redis-cli. Check `redis-cli --cluster help` for more info.
5. New sorted set commands: ZPOPMIN/MAX and blocking variants.
6. Active defragmentation version 2.
7. Improvemenets in HyperLogLog implementations.
8. Better memory reporting capabilities.
9. Many commands with sub-commands now have an HELP subcommand.
10. Better performances when clients connect and disconnect often.
11. Many bug fixes and other random improvements.
12. Jemalloc was upgraded to version 5.1
13. CLIENT UNBLOCK and CLIENT ID.
14. The LOLWUT command was added. http://antirez.com/news/123
15. We no longer use the "slave" word if not for API backward compatibility.
16. Differnet optimizations in the networking layer.
17. Lua improvements:
    - Better propagation of Lua scripts to slaves / AOF.
    - Lua scripts can now timeout and get in -BUSY state in the slave as well.
18. Dynamic HZ to balance idle CPU usage with responsiveness.
19. The Redis core was refactored and improved in many ways.

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
(in decreasing number of commits) by:

Fabio Nicotra, <artix2@gmail.com>
Soloestoy <zhaozhao.zz@alibaba-inc.com>
Itamar Haber <itamar@redislabs.com>
Oran Agra <oran@redislabs.com>
Dvir Volk <dvirsky@gmail.com>
dejun.xdj <dejun.xdj@alibaba-inc.com>
Guy Benoish <guy.benoish@redislabs.com>
Charsyam <charsyam@gmail.com>
Otmar Ertl <otmar.ertl@gmail.com>
Jan-Erik Rediger <janerik@fnordig.de>
Spinlock <wnzheng@gmail.com>

Migrating from 4.0 to 5.0
=========================

Redis 4.0 is mostly a strict subset of 5.0, you should not have any problem
upgrading your application from 4.0 to 5.0. However this is a list of small
non-backward compatible changes introduced in the 5.0 release:

* redis-cli now implements the cluster management tool. We still ship the
  old redis-trib, but new fixes will be implemented only in redis-cli.
  See `redis-cli --cluster help` for more info.

* The RDB format changed. Redis 5.0 is still able to read 4.0 (and all the
  past versions) files, but not the other way around.

* Certain log formats and sentences are different in Redis 5.0.

* Now by default maxmemory is ignored by slaves, and used only once a slave
  is promoted to master. It means that in setups where you want slaves to
  enforce maxmemory in an independent way from the master (that will anyway
  stream the key eviction DEL commands), you should active this feature manually
  and make sure you understand that it breaks consistency if writes are not
  always idempotent. TLDR: the new behavior is much better for 99.999% of use
  cases, revert it if you really know what you are doing.

* Scripts are only replicated by their *effects* and not by sending EVAL/EVALSHA
  to slaves or the AOF log itself. This is much better in the general case
  and in the future we want to totally remove the other possiblity of
  propagating scripts the old way (as EVAL). However you can still turn this
  back to the default via the non-documented (if not here) Redis configuration
  directive "lua-replicate-commands yes" or
  "DEBUG lua-always-replicate-commands 0". However note that Redis 6 may
  completely remove such feature.

* Because of the above change related to scripts replication, certain Redis
  commands that in Redis 4 had their result ordered lexicographically before
  being passed to Lua via the return value of redis.call(), now have a behavior
  more similar to calling the commands directly from a normal client. For
  instance the ordering of elements returned by SMEMBERS or SDIFF is now
  undetermined in Lua, exactly as it is by default when calling the commands
  from a non-scripting context.

--------------------------------------------------------------------------------

Credits: For each release, a list of changes with the relative author is
provided. Where not specified the implementation and design is done by
Salvatore Sanfilippo. Thanks to Redis Labs for making all this possible.
Also many thanks to all the other contributors and the amazing community
we have.

Commit messages may contain additional credits.

Enjoy,
Salvatore
