Redis Changelog

What's new in Redis 3.2.3

Sep 17, 2016
  • Fix a bug to delay bgsave while AOF rewrite in progress for replication
  • Update linenoise to fix insecure redis-cli history file creation

New in Redis 3.2.1 (Jun 27, 2016)

  • A critical bug in Sentinel was hopefully fixed. During the big 3.2 refactoring of Redis Sentinel, in order to implement connection sharing to make Sentinel able to scale better (few Sentinels to monitor many masters), a bug was introduced that mis-counted the number of pending commands in the Redis link. This in turn resulted into an inability to talk with certain Redis instances. A common result of this bug was the inability of Redis Sentinel to reconfigure back the old master, after a failover, when it is reachable again, as the slave of the new master. This was due to the inability to talk with the old master at all.
  • BITFIELD bugs fixed.
  • GEO commands fixes on syntax errors and edge cases.
  • RESTORE now accepts dumps generated by older Redis versions.
  • Jemalloc now is really configured to save you memory, for a problem a change in the jemalloc configuration did not really survived when the 3.2.0 release was finalized.
  • TTL and TYPE command no longer alter the last access time of a key, for LRU evictions purposes. A new TOUCH command was introduced *just* to update the access time of a key.
  • A bug was fixed in redis-cli, that connected to the instance running on the port 6379 if there was one, regardless of what was specified.
  • TCP keep alive is now enabled by default. This should fix most ghost connections problems without resulting in any practical change in otherwise sane deployments.
  • A Sentinel crash that could happen during failovers was fixed.

New in Redis 3.2.0 RC 3 (Feb 22, 2016)

  • [FIX] avg_ttl reporting in INFO improved. (Salvatore Sanfilippo)
  • [FIX] Sentinel: improve handling of known Sentinel instances.
  • [FIX] Redis Cluster address update (via gossip section) processing improved to avoid initiating inwanted handshakes.

New in Redis 3.0.7 (Jan 27, 2016)

  • [FIX] Many fixes to MIGRATE multiple keys implementation. The command could handle errors in a faulty way leading to crashes or other unexpected behaviors. MIGRATE command refactoring. (The analysis of the faulty conditions was conducted by Kevin McGehee. The fix was developed by Salvatore Sanfilippo)
  • [FIX] A Redis Cluster node crash was fixed because of wrong handling of node->slaveof pointers. (Reported by JackyWoo, fixed by Salvatore Sanfilippo)
  • [FIX] Fix redis-trib rebalance when nodes need to be left empty because the specified weight is zero. (Reported by Shahar Mor, fixed by Salvatore Sanfilippo)
  • [FIX] MIGRATE: Never send -ASK redirections for MIGRATE when there are open slots. Redis-trib and other cluster management utility must always be free to move keys between nodes about open slots, in order to reshard, fix the cluster configuration, and so forth. (Salvatore Sanfilippo)
  • [FIX] Lua debugger crash when printing too deeply nested objects. (Reported by Paul Kulchenko, fixed by Salvatore Sanfilippo)
  • [FIX] Redis-cli implementation of Lua debugging now allows to use the SCRIPT DEBUG command directly, switching to debugging mode as needed. (Reported by Paul Kulchenko, fixed by Salvatore Sanfilippo)
  • [FIX] Redis-trib is now able to fix more errors. A new CLUSTER subcommand called BUMPEPOCH was introduced in order to support new modes for the "fix" subcommand. (Salvatore Sanfilippo)
  • [NEW] Redis proctected mode: this feature improves Redis security and makes harder to run Redis in a configuration that is unsecure because no firewalling was used in order to protect Redis from external accesses. See this Reddit post for more info: https://www.reddit.com/r/redis/comments/3zv85m/new_security_feature_redis_protected_mode/ (Salvatore Sanfilippo)
  • [NEW] Cluster/Sentinel tests now use OSX leak to perform leak detection at the end of every unit. (Salvatore Sanfilippo)
  • [NEW] Detect and show server crashes during Cluster/Sentinel tests. (Salvatore Sanfilippo)
  • [NEW] More reliable Cluster/Sentinel test becuase of timing errors and -LOADING errors. (Salvatore Sanfilippo)

New in Redis 3.0.6 (Dec 20, 2015)

  • [FIX] lua_struct.c/getnum security issue fixed. (Luca Bruno discovered it, patched by Sun He and Chris Lamb)
  • [FIX] Redis Cluster replica migration fixed. See issue #2924 for details. (Salvatore Sanfilippo)
  • [FIX] Fix a race condition in processCommand() because of interactions with freeMemoryIfNeeded(). Details in issue #2948 and especially in the commit message d999f5a. (Race found analytically by Oran Agra, patch by Salvatore Sanfilippo)
  • [NEW] Backported from the upcoming Redis 3.2: MIGRATE now supports an extended multiple-keys pipelined mode, which is an order of magnitude faster. Redis Cluster now uses this mode in order to perform reshardings and rebalancings. (Salvatore Sanfilippo)
  • [NEW] Backported from the upcoming Redis 3.2: Redis Cluster has now support for rebalancing via the redis-trib rebalance command. Demo here: https://asciinema.org/a/0tw2e5740kouda0yhkqrm5790 Official documentation will be available ASAP. (Salvatore Sanfilippo)
  • [NEW] Redis Cluster redis-trib.rb new "info" subcommand.
  • [NEW] Redis Cluster tests improved. (Salvatore Sanfilippo)
  • [NEW] Log offending memory access address on SIGSEGV/SIGBUS (Salvatore Sanfilippo)

New in Redis 3.0.3 (Jul 18, 2015)

  • [FIX] Fix blocking operations timeout precision when HZ is at its default value (not increased) and there are thousands of clients connected at the same time. This bug affected Sidekiq users that experienced a very long delay for BLPOP and similar commands to return for timeout. Check commit b029ff1 for more info. (Salvatore Sanfilippo)
  • [FIX] MIGRATE "creating socket: Invalid argument" error fix. Check issues #2609 and #2612 for more info. (Salvatore Sanfilippo)
  • [FIX] Be able to connect to the master even when the slave is bound to just the loopback interface and has no valid public address in the network the master is reacahble. (Salvatore Sanfilippo)
  • [FIX] ZADD with options encoding promotion fixed. (linfangrong)
  • [FIX] Reset aof_delayed_fsync on CONFIG RESETSTATS. (Tom Kiemes)
  • [FIX] PFCOUNT key parsing in cluster fixed. (MOON_CLJ)
  • [FIX] Fix Solaris compilation of Redis 3.0. (Jan-Erik Rediger)
  • [NEW] Variadic EXISTS command. Now the command accepts multiple arguments and returns the total count of existing keys.

New in Redis 3.0.2 (Jun 4, 2015)

  • [FIX] Critical security issue fix by Ben Murphy: http://t.co/LpGTyZmfS7
  • [FIX] SMOVE reply fixed when src and dst keys are the same. (Glenn Nethercutt)
  • [FIX] Lua cmsgpack lib updated to support str8 type. (Sebastian Waisbrot)
  • [NEW] ZADD support for options: NX, XX, CH. See new doc at redis.io.
  • [NEW] Senitnel: CKQUORUM and FLUSHCONFIG commands back ported.

New in Redis 3.0.1 (May 6, 2015)

  • [FIX] Sentinel memory leak due to hiredis fixed. (Salvatore Sanfilippo)
  • [FIX] Sentinel memory leak on duplicated instance. (Charsyam)
  • [FIX] Redis crash on Lua reaching output buffer limits. (Yossi Gottlieb)
  • [FIX] Sentinel flushes config on +slave events. (Bill Anderson)

New in Redis 3.0.0 (Apr 16, 2015)

  • What's new:
  • Redis Cluster: a distributed implementation of a subset of Redis.
  • New "embedded string" object encoding resulting in less cache misses. Big speed gain under certain work loads.
  • AOF child -> parent final data transmission to minimize latency due to "last write" during AOF rewrites.
  • Much improved LRU approximation algorithm for keys eviction.
  • WAIT command to block waiting for a write to be transmitted to the specified number of slaves.
  • MIGRATE connection caching. Much faster keys migraitons.
  • MIGARTE new options COPY and REPLACE.
  • CLIENT PAUSE command: stop processing client requests for a specified amount of time.
  • BITCOUNT performance improvements.
  • CONFIG SET accepts memory values in different units (for example you can use "CONFIG SET maxmemory 1gb").
  • Redis log format slightly changed reporting in each line the role of the instance (master/slave) or if it's a saving child log.
  • INCR performance improvements.
  • Refactoring changes (no new features nor bug fixes):
  • Blocking operations full refactoring (blocked.c)
  • Client output buffer memory tracking refactored.

New in Redis 3.0.0 RC 6 (Mar 25, 2015)

  • General changes:
  • [FIX] Redis (non clustered & clustered) replication bug involving blocking operations: see issue #2473. (Salvatore Sanfilippo)
  • Cluster changes:
  • [FIX] clientsArePaused() fix crashing the old master during manual failover. (Salvatore Sanfilippo)
  • [FIX] Lua scripts replication in Redis Cluster was totally broken. (Salvatore Sanfilippo)
  • [FIX] Redirect clients blocked into list operations when the hash slot they are blocked into is migrated to another instance or the cluster state turns into "fail". (Salvatore Sanfilippo)
  • [NEW] TAKEOVER option for CLUSTER FAILOVER implemented. It is now possible to fix a cluster manually in the minority side of the partition, for example in order to allow for multi DC setups & recovery. (Salvatore Sanfilippo)

New in Redis 3.0.0 RC 5 (Mar 20, 2015)

  • General changes:
  • [FIX] Fix LATENCY command crash. (Salvatore Sanfilippo, thx to Ingmar)
  • [FIX] Config: missing activerehashing option support in CONFIG SET added. (Salvatore Sanfilippo, thx to Bill Anderson)
  • [FIX] Fix for backtrace generation issue. (Mariano Pérez Rodríguez, Matt Stancliff, Salvatore Sanfilippo)
  • [NEW] Redis-cli --latency-dist backported from unstable.
  • Cluster changes:
  • [FIX] Avoid redundant SELECT in MIGRATE. (Tommy Wang, Salvatore Sanfilippo)
  • [FIX] More robust slave check in CLUSTER REPLICATE. (Salvatore Sanfilippo)
  • [FIX] Fixed possible Redis Cluster node crash due to wrong separation of concerns between getNodeByQuery() and Cluster global state update function. (Salvatore Sanfilippo, thx to Ingmar)
  • [NEW] Add command CLUSTER MYID to easily featch instance ID. (Michel Martens)
  • Sentinel changes:
  • [NEW] Support for CLIENT command added. It was missing in the command table. (Leandro López)

New in Redis 3.0.0 RC 4 (Feb 13, 2015)

  • [FIX] redis-cli CSV output NIL spurious newline removed. (Matt Collier)
  • [FIX] Memory efficiency test in unit test is now much faster: it affacted the total "make test" execution time in a bad way. (Salvatore Sanfilippo)
  • [FIX] Fixes and improvements to dict.c and LRU eviction. Redis 3.0.0 new LRU eviction had bugs creating high latency spikes when LRU was happening during the keys dictionary rehashing. This bug is not present into 2.8, was 3.0 specific. As a side effect of this issue dict.c is now improved, and LRU algorithm is more precise (better approximates true LRU). This was a joint effort, see issue #2306 for details. (Oran Agra, Sun He, Salvatore Sanfilippo). Thanks to Charsyam for spotting an integer overflow.
  • [NEW] New latency tool: redis-cli --latency-dist is able to show an xterm-256 based spectrum of latencies over time. (Salvatore Sanfilippo)
  • [NEW] redis-cli --lru-test implemented (cache workload simulator). (Salvatore Sanfilippo)
  • [NEW] redis-cli --stat now shows LOAD when Redis is loading data.
  • [NEW] Support "1G" etc. units in CONFIG SET. (Chris Lamb, Salvatore Sanfilippo)

New in Redis 3.0.0 RC 3 (Jan 31, 2015)

  • General changes:
  • [FIX] AOF bug unlikely to happen in practice and mostly harmless: child process segfaults when parent is not reachable via pipe. (Sun He)
  • [FIX] Scripting engine now reports an error when misused with Lua debug hooks, instead of crashing. (Salvatore Sanfilippo)
  • Cluster changes:
  • [FIX] Several issues with Redis Cluster internal nodes objects handling. (Matt Stancliff & Salvatore Sanfilippo)
  • [FIX] Improvements in the Cluster test. (Matt Stancliff & Salvatore Sanfilippo).
  • [FIX] Cluster memory leaks / double frees (Matt Stancliff).
  • [FIX] /dev/urandom surrogate for generation of unique IDs in a more cheap way. (Salvatore Sanfilippo)
  • [FIX] Fixes and improvements to PING / PONG packets gossip sections in order to improve (and fix) failure detection and speedup cluster info propagation. (Salvatore Sanfilippo)
  • [NEW] CLUSTER count-failure-reports command added. (Salvatore Sanfilippo)

New in Redis 3.0.0 RC 2 (Jan 15, 2015)

  • This is the second release candidate of Redis Cluster. The major changes are back porting of things implemented into the unstable branch while this was still possible (with the new development model adopted only bug fixes will be merged in the future).
  • RC2 also fixes a few Redis Cluster non critical bugs.
  • General changes:
  • [FIX] A number of minor bug fixes.
  • [NEW] Diskless replication backportede.
  • [NEW] Lua bitops and updated cmsgpack backported.
  • [NEW] Transparent Huge Pages warnings and reporting backported.
  • Cluster changes:
  • [FIX] Fix PUBLISH cluster bus message count field.
  • [FIX] It is no longer possible to write outside node hash slots using Lua.
  • [FIX] Valgrind warnings (no actual bugs).
  • [FIX] Less strict in acceptiong myself->ip if it's not populated.
  • [NEW] Better testing of Lua scripts.

New in Redis 2.8.19 (Dec 16, 2014)

  • Fixed issues:
  • 02d465c Don't log admin commands in MONITOR. (antirez)
  • 4d8f426 List of commands flagged as admin commands modified. (antirez)
  • e47e460 Lua cmsgpack lib updated to latest version. (antirez)
  • 5509c14 Add symlink to redis-sentinel during make install (Rhommel Lamas)
  • 7de1ef7 SORT: Don't sort Set elements if not needed. (antirez)
  • e945a54 Fix zero-ordering SORT when called against lists (Matt Stancliff)
  • d81c383 Update redis_init_script.tpl (Ben Dowling)
  • dba57ea FIXED redis-benchmark's idle mode.With idle mode shouldn't create write event (zhanghailei)
  • 888ea17 zipmap.c: update comments above (Sun He)
  • 86ebc13 replaced // comments #2150 (Deepak Verma)
  • 3d73f08 redis-benchmark AUTH command to be discarded after the first send #2150 (azure provisioned user)
  • 76d53a6 sds.c: Correct two spelling mistakes in comments (Sun He)
  • 4848cf9 sds.c/sdscatvprintf: set va_end to finish va_list cpy (Sun He)
  • d2f584f sds.c: Correct some comments (Sun He)
  • 2ed3f09 Update whatisdoing.sh (Serghei Iakovlev)
  • 77b997d Include stropts only if __sun is defined. (antirez)
  • d409371 Fix implicit declaration of ioctl on Solaris (Jan-Erik Rediger)
  • 23b96c0 Silence _BSD_SOURCE warnings in glibc 2.20 and forward (Johan Bergström)
  • a47a042 Mark whatisdoing.sh as deprecated in top-comment. (antirez)
  • b5737d2 getting pid fixes (Serghei Iakovlev)
  • a598e08 sparkline.c: AddSample skip Empty label (Sun He)
  • 7d480ab sparkline.c: mov label-ini into the AddSample Function (Sun He)
  • 2f3c860 Only ignore sigpipe in interactive mode (Jan-Erik Rediger)
  • 0c211a1 Simplify lua_cmsgpack macro and fix build on old Linux distros. (antirez)

New in Redis 2.8.18 (Dec 4, 2014)

  • [FIX] Linenoise updated to be more VT100 compatible. (Salvatore Sanfilippo)
  • [FIX] A number of typos fixed inside comments. (Various authors)
  • [FIX] redis-cli no longer quits after long timeouts. (Matt Stancliff)
  • [FIX] Test framework improved to detect never terminating scripts, cleanup instances on crashes. (Salvatore Sanfilippo)
  • [FIX] PFCOUNT can be used on slaves now. (Salvatore Sanfilippo)
  • [FIX] ZSCAN no longer report very small scores as 0. (Matt Stancliff, Michael Grunder, Salvatore Sanfilippo)
  • [FIX] Don't show the ASCII logo if syslog is enabled. Redis is now an Enterprise Grade product. (Salvatore Sanfilippo)
  • [NEW] EXPERIMENTAL: Diskless replication, for more info check the doc at http://redis.io/topics/replication. (Salvatore Sanfilippo).
  • [NEW] Transparent Huge Pages detection and reporting in logs and LATENCY DOCTOR output. (Salvatore Sanfilippo)
  • [NEW] Many Lua scripting enhancements: Bitops API, cjson upgrade and tests, cmsgpack upgrade. (Matt Stancliff)
  • [NEW] Total and instantaneous Network bandwidth tracking in INFO.
  • [NEW] DEBUG POPULATE two args form implemented (old form still works). The second argument is the key prefix. Default is "key:" (Salvatore Sanfilippo)
  • [NEW] Check that tcp-backlog is matched by /proc/sys/net/core/somaxconn, and warn about it if not. (Salvatore Sanfilippo)

New in Redis 3.0.0 RC 1 (Oct 9, 2014)

  • General changes:
  • [FIX] An very large number of small fixes, old and new, merged in the context of a the issue #1906. Please see the issue page here for exact credits: https://github.com/antirez/redis/pull/1906 of each commit. (Matt Stancliff and many others).
  • [FIX] SAVE is no longer propagated to AOF / slaves.
  • [FIX] GETRANGE test no longer fails for 32 bit builds (Matt Stancliff).
  • [FIX] Limit SCAN latency when the hash table is in an odd state (very few populted buckets because rehashing is in progress). (Xiaost and Salvatore Sanfilippo)
  • [NEW] Redis is now able to load truncated AOF files without requiring a redis-check-aof utility run. The default now is to load truncated (but apparently not corrupted) AOFs, you can change this in redis.conf. (Salvatore Sanfilippo).
  • [NEW] DEBUG POPULATE two args form implemented. It is now possible to call it with DEBUG POPULATE . Default prefix is "key:" as usually.
  • [NEW] INCR: Modify incremented object in-place when possible. This results in speed improvements + possibly better memory locality.
  • Cluster changes:
  • [FIX] Cluster: claim ping_sent time even if we can't connect.
  • [FIX] redis-trib should not abort easily on connection issues.
  • [FIX] Cluster test: less console-spammy resharding test.
  • [FIX] Fix logic to detect we are among a minority.
  • [FIX] Process gossip section only for known nodes.
  • [NEW] Redis Cluster is stable and tested enough, there is a clear MVP, so it was promoted from beta to stable.
  • [NEW] New unit 09, Pub/Sub across the cluster.
  • [NEW] New unit 08, update messages.
  • [NEW] New cluster option to work with partial slots coverage.
  • [NEW] More chatty cluster slaves when failover is stalled. They log reason with rate limiting, only when reason changes or a given time has elapsed.
  • Sentinel changes:
  • [FIX] Sentinel critical bug fixed: the absolute majority was computed in a wrong way because of a programming error. Now the implementation does what the specification says and the majority to authorize a failover (that should not be confused with the ODOWN quorum) is the majority of *allthe Sentinels ever seen for a given master, regardless of their current state.
  • [FIX] Resolved a memory leak in the hiredis library causing a memory leak in Redis Sentinel when a monitored instance or another Sentinel is unavailable. Every reconnection attempt will leak a small amount of memory, but in the long run the process can reach a considerable size.
  • [NEW] Sentinel: ability to announce itself with an arbitrary IP/port to work in the context of natted networks. However this is probably still not enough since there is no equivalent mechanism for slaves listed in the master INFO output. (Dara Kong and Salvatore Sanfilippo)

New in Redis 2.8.16 (Sep 17, 2014)

  • [FIX] The ability to load truncated AOF files introduced with Redis 2.8.15 contains a bug fixed in this release: after loading the file was not truncated to the last valid command, so the new commands are appended after a non well formed command.
  • [FIX] SAVE is no longer propagated to AOF / slaves.

New in Redis 2.8.15 (Sep 13, 2014)

  • [FIX] Sentinel critical bug fixed: the absolute majority was computed in a wrong way because of a programming error. Now the implementation does what the specification says and the majority to authorize a failover (that should not be confused with the ODOWN quorum) is the majority of *allthe Sentinels ever seen for a given master, regardless of their current state.
  • [FIX] GETRANGE test no longer fails for 32 bit builds (Matt Stancliff).
  • [FIX] Limit SCAN latency when the hash table is in an odd state (very few populted buckets because rehashing is in progress). (Xiaost and Salvatore Sanfilippo)
  • [NEW] Redis is now able to load truncated AOF files without requiring a redis-check-aof utility run. The default now is to load truncated (but apparently not corrupted) AOFs, you can change this in redis.conf. (Salvatore Sanfilippo).
  • [NEW] Sentinel: ability to announce itself with an arbitrary IP/port to work in the context of natted networks. However this is probably still not enough since there is no equivalent mechanism for slaves listed in the master INFO output. (Dara Kong and Salvatore Sanfilippo)

New in Redis 2.8.14 (Sep 2, 2014)

  • [FIX] Don't prevent use of shared integers if maxmemory policy is non-LRU. (Salvatore Sanfilippo)
  • [FIX] Fail SYNC if background save child aborted due to a signal. (Yossi Gottlieb)
  • [FIX] Different small redis-cli fixes. (Dov Murik, Charsyam, cubicdaiya, Kashif Rasul, Jan-Erik Rediger, Matt Stancliff)
  • [FIX] AIX compilation fixes. (Siah Lyimo)
  • [FIX] A number of other smaller issues.
  • [FIX] Improved SIGINT handling (Matt Stancliff, Salvatore Sanfilippo)
  • [FIX] Use unsigned types in SDS header to raise limit to 4GB. (Matt Stancliff, Salvatore Sanfilippo)
  • [FIX] Handle signed/unsigned comparisons with more care around the code. (Salvatore Sanfilippo)
  • [FIX] Colorized test output fixed to don't change the background color. (Mariano Pérez Rodríguez)
  • [FIX] More Sentinel IPv6 fixes. (Eiichi Sato)
  • [FIX] Deny CLIENT command in scripts. (Matt Stancliff)
  • [FIX] Allow datasets with more than 2 billion of keys, initial work.
  • [FIX] Fix a Lua scripting crash by storing the length of the static argv when first allocated. (Paddy Byers)
  • [NEW] Pub/Sub PING. (Salvatore Sanfilippo)
  • [NEW] Much faster ZUNIONSTORE. (Kyle Hubert, Salvatore Sanfilippo)
  • [NEW] Faster ll2string() implementation. (Salvatore Sanfilippo)
  • [NEW] **WARNING, minor API change**: PUBSUB NUMSUB: return type modified to integer. (Matt Stancliff)
  • [NEW] redis-benchmark support for AUTH. (CharSyam)

New in Redis 3.0.0 Beta 8 (Jul 30, 2014)

  • General changes:
  • [FIX] Solaris compilation issues. (Matt Stancliff, Salvatore Sanfilippo)
  • [FIX] Allow shared integer objects if maxmemory policy is not LRU based. (Salvatore Sanfilippo)
  • [FIX] PFSELFTEST: less false positives. (Salvatore Sanfilippo)
  • [FIX] Fail SYNC if background save child aborted due to a signal. (Yossi Gottlieb)
  • [NEW] Latency framework backported from unstable branch. (Salvatore Sanfilippo)
  • [NEW] AOF rewrite improved for latency. (Salvatore Sanfilippo)
  • [NEW] Pub/Sub PING. (Salvatore Sanfilippo)
  • [NEW] Much faster ZUNIONSTORE. (Kyle Hubert, Salvatore Sanfilippo)
  • [NEW] Faster ll2string() implementation. (Salvatore Sanfilippo)
  • Cluster changes:
  • [FIX] CLUSTER RESET: Flush slave dataset on reset. (Salvatore Sanfilippo)
  • [FIX] Replica migration: don't migrate to masters that never had slaves in the past, but only to masters that remained orphaned after failure events. (Salvatore Sanfilippo)
  • [NEW] redis-trib: allow to reshard in non-interactive way. (Salvatore Sanfilippo)
  • [NEW] Cluster test: unit 04, check consistency during resharding. (Salvatore Sanfilippo)
  • [NEW] Cluster test: unit 05, slave selection. (Salvatore Sanfilippo)
  • [NEW] Cluster test: unit 06, slaves with stale data can't failover. (Salvatore Sanfilippo)
  • [NEW] Cluster test: unit 07, replicas migration. (Salvatore Sanfilippo)
  • Sentinel changes:
  • No Sentinel changes in this release.

New in Redis 2.8.13 (Jul 15, 2014)

  • [FIX] CLIENT KILL minor backward compatibility fixes. (Salvatore Sanfilippo)
  • [FIX] Enable HAVE_ATOMIC for PowerPC. (Matt Stancliff)
  • [FIX] More robust PSYNC and AOF rewrites tests. (Salvatore Sanfilippo)
  • [FIX] Solaris build fixed. (Matt Stancliff, Salvatore Sanfilippo)
  • [NEW] The new latency monitoring feature, as documented at http://redis.io/topics/latency-monitor (Salvatore Sanfilippo)
  • [NEW] The COMMAND command, exposing the Redis command table as an API. (Matt Stancliff)
  • [NEW] Update used memory with C11 __atomic. (Matt Stancliff)

New in Redis 3.0.0 Beta 7 (Jul 9, 2014)

  • General changes:
  • [FIX] Scripting fixes backported from unstable, see Redis 2.8.12 changelog for more info. (Salvatore Sanfilippo)
  • [FIX] Cancel SHUTDOWN if initial AOF is being written. (Matt Stancliff)
  • [NEW] New command: COMMAND, for commands introspection (Matt Stancliff & Salvatore Sanfilippo)
  • [NEW] hiredis: Update to latest version. (Matt Stancliff)
  • [NEW] Jemalloc updated to 3.6.0. (Salvatore Sanfilippo)
  • Cluster changes:
  • [FIX] Cluster: clear NOADDR flag when updating node address. (Salvatore Sanfilippo)
  • [NEW] New CLUSTER SLOTS command to simplify Cluster clients operations. (Matt Stancliff)
  • [NEW] More Cluster tests. (Salvatore Sanfilippo)
  • [NEW] Log when failover authorization are granted / denied. (Salvatore Sanfilippo)
  • Sentinel changes:
  • [FIX] A few Sentinel bugs fixed and improvements, see Redis 2.8.12 changelog for more info. (Salvatore Sanfilippo & Matt Stancliff)
  • [NEW] New Sentinel-Client handshake protocol, ROLE command, CLIENT KILL, all backported to 3.0 branch. (Salvatore Sanfilippo)

New in Redis 2.8.12 (Jul 9, 2014)

  • [FIX / BREAKS BACKWARD COMPATIBILITY] Using SELECT inside Lua scripts no longer makes the selected DB to be set in the calling client. So Lua can still use SELECT, but the client calling the script will remain set to the original DB. Thix fixes an issue with Redis replication of Lua scripts that called SELECT without reverting the selected DB to the original one. (Salvatore Sanfilippo)
  • [FIX] Sentinel failover was instalbe if the master was detected as available during the failover (especially during manual failovers) because of an implementation error (lack of checking of SRI_PROMOTED flag). (Salvatore Sanfilippo)
  • [FIX] Cancel SHUTDOWN if initial AOF is being written. (Matt Stancliff)
  • [FIX] Sentinel: bind source address for outcoming connections. (Matt Stancliff).
  • [FIX] Less timing sensitive Sentinel tests. (Salvatore Sanfilippo).
  • [NEW] redis-cli --intrinsic-latency stopped with SIGINT still reports stats (Matt Stancliff)
  • [NEW] Sentinels broadcast an HELLO message ASAP after a failover in order to reach a consistent state faster (before it relied for periodic HELLO messages). (Salvatore Sanfilippo).
  • [NEW] Jemalloc updated to 3.6.0. (Salvatore Sanfilippo)
  • [NEW] CLIENT LIST speedup. (Salvatore Sanfilippo)
  • [NEW] CLIENT LIST new unique incremental ID to every client. (Salvatore Sanfilippo)
  • [NEW] ROLE command added. (Salvatore Sanfilippo)
  • [NEW] CLIENT KILL new form to kill by client type and ID (see doc at redis.io for more info). (Salvatore Sanfilippo)
  • [NEW] Sentinel now disconnects clients when instances are reconfigured (see http://redis.io/topics/sentinel-clients). (Salvatore Sanfilippo)
  • [NEW] Hiredis update to latest version. (Matt Stancliff)

New in Redis 2.8.11 (Jun 11, 2014)

  • [FIX] A previous fix for Lua -> Redis numerical precision enhancement introduced a new problem. In Redis 2.8.10 commands called from Lua passing a string that "looks like" a very large number, may actually use as argument the string converted as a float. This bug is now fixed.
  • [FIX] Now commands other than *PUSHadding elements to a list will be able to awake clients blocked in a blocking POP operation.
  • [FIX] Cygwin compilation fixes.

New in Redis 3.0.0 Beta 6 (Jun 10, 2014)

  • General changes:
  • [FIX] Fix software watchdog signal handler crash due to re-entering.
  • [FIX] Better Lua number -> string conversion for Lua scripts.
  • [FIX] Serious replication bug when min-slaves-* feature is used in slaves configuration fixed.
  • [FIX] Blocking pop on lists now works when the list is created by commands other than *PUSH* (for example SORT STORE).
  • Cluster changes:
  • [FIX] CRITICAL: For a bug in the implementation of CLUSTER SET-CONFIG-EPOCH introduced with beta-3 (especially beta-4 where the command is actually used by redis-trib), a configEpoch for a node could jump backward, breaking the eventual consistency property of the slots -> nodes mapping in the cluster.

New in Redis 2.8.10 (Jun 5, 2014)

  • [FIX] IMPORTANT! A min-slaves-to-write option active in a slave totally prevented the slave from accepting the master stream of commands. This release includes testes for min-slaves-to-write, and a fix for this issue.
  • [FIX] Sometimes DEL returned 1 for already expired keys. Fixed.
  • [FIX] Fix test false positive because new osx 'leaks' output.
  • [FIX] PFCOUNT HLL cache invalidation fixed: no wrong value was reported but the cache was not used at all, leading to lower performances.
  • [FIX] Accept(2) multiple clients per readable-event invocation, and better processing of I/O while loading or busy running a timedout script. Basically now the LOADING / BUSY errors are reported at a decent speed.
  • [FIX] A softwaer watchdog crash fixed.
  • [FIX] Fixed a Lua -> Redis numerical precision loss.
  • [NEW] Lua scripting engine speed improved.
  • [NEW] Sentinel generates one new event for humans to understand better what is happening during a failover: +config-update-from. Also the time at which a failover will be re-attempted is logged.

New in Redis 3.0.0 Beta 5 (May 27, 2014)

  • This is the 5th beta of Redis 3.0.0. It does not include any real worthwhile change (just three days passed since the previous beta), but fixes two stupid bugs preventing cluster tests to pass.

New in Redis 3.0.0 Beta 4 (May 24, 2014)

  • General changes:
  • [NEW] Scripting engine performances improvements.
  • [NEW] Log format slightly changed to report current node role.
  • [FIX] Correct the HyperLogLog stale cache flag to prevent unnecessary computation.
  • Cluster changes:
  • [NEW] redis-trib: ability to import data from standalone Redis instances.
  • [NEW] redis-trib: "fix" subcommand much better at fixing errors.
  • [NEW] CLUSTER FAILOVER FORCE implemented.
  • [NEW] CLUSTER RESET implemented, it is now possible to completely reset nodes and create a new cluster without restarting anything.
  • [NEW] Slave validity factor (max estimated data age to still failover) is now under the control of the user, and can be configured via redis.conf or CONFIG SET. Option name cluster-slave-validity-factor.
  • [NEW] Cluster test: failure detection and failover initial tests.
  • [NEW] CLUSTER MEET: better error messages when address is invalid.
  • [NEW] Bulk-accept new Cluster nodes in the Cluster bus instead of performing just a single accept() per event fired.
  • [FIX] Bypass data_age check for manual failovers.
  • [FIX] Fixed data_age computation / check integer overflow.
  • [FIX] Various fixes to Tcl client.tcl Redis Cluster client used in tests.
  • [FIX] Better handling of stolen slots.
  • [FIX] Don't accept cluster bus connections during startup.
  • Sentinel changes:
  • [NEW] Generate +config-update-from event when a new config is received.
  • [NEW] Log when a failover will be re-attempted again.
  • [FIX] Sentinel: Add "dir /tmp" directive in example sentinel.conf.

New in Redis 3.0.0 Beta 3 (May 5, 2014)

  • General changes:
  • [NEW] New data structure: the HyperLogLog (see 2.8 release notes).
  • [NEW] Lexicograhical range queries in sorted sets (see 2.8 release notes).
  • [NEW] LRU algorithm precision greatly improved.
  • [FIX] Redis is now much more responsive to reply with LOADING / BUSY errors.
  • Cluster changes:
  • [NEW] Cluster testing framework and initial tests.
  • [NEW] Cluster epochs collision resolution (make Redis Cluster more resilient to admin and programming errors).
  • [NEW] Persist / fsync some global state to ensure correct crash-recovery semantics.
  • [NEW] New command introduced: CLUSTER SET-CONFIG-EPOCH, still not used by redis-trib. Will be used to speedup the assignment of unique epochs to different nodes at cluster creation time. For now this is handled as a side effect of the cluster epochs collision resolution.
  • [FIX] Different fixes to redis-trib cluster creation.
  • [FIX] Fix an error in the CLUSTER NODES output for nodes slots.
  • Sentinel changes:
  • [NEW] Sentinels are now able to send update messages in a peer-to-peer fashion even if no Redis instances are available. Now the Sentinel liveness property that the most updated configuration in a given partition is propagated to all the Sentinels is extended to partitions without reachable instances.
  • [NEW] Sentinel safety properties are now ensured in a crash-recovery system model since some state is persisted on disk before replying to other nodes, and reloaded at startup.
  • [NEW] Sentinel now uses CLIENT SETNAME so that it is easy to identify Sentinels using CLIENT LIST among other clients.
  • [NEW] Sentinel failure detection and reconnection code improved.

New in Redis 3.0.0 Beta 2 (May 5, 2014)

  • General changes:
  • [FIX] Sometimes the absolute config file path was obtained in a wrong way. This happened when there was a "dir" directive inside the config file and at the same time the configuration file was given as a relative path to redis-server or redis-sentinel executables.
  • [FIX] redis-cli: Automatically enter --slave mode when SYNC or PSYNC are called during an interactive session.
  • [FIX] BITCOUNT: fixed unaligned access causing issues in sparc and other archs not capable of dealing with unaligned accesses. This also makes the code faster in archs where unaligned accesses are allowed.
  • [FIX] Force INFO used_memory_peak to match peak memory. This generated some confusion among users even if it was not an actual bug.
  • [FIX] Fixed an critical EVALSHA script cache bug: scripts executed may not propagate to AOF / Slaves correctly under certain conditions. See issue #1549 at Github for more information.
  • [FIX] Fixed multiple bugs resulting into closing the link with master or slave during replication without good reasons. This will result in useless resynchronizations, or infinite loops where the replication link can't be established.
  • [FIX] Don't count the time needed to populate the buffers of clients waiting in MONITOR mode when populating the Slow Log entries.
  • [NEW] Redis-cli updated to use SCAN instead of random sampling via RANDOMKEY in order to implement --bigkeys feature. Moreover the implementation now supports pipelining and reports more information at the end of the scan. Much faster, much better. A special thank you to Michael Grunder for this improvement.
  • [NEW] redis-cli now supports a new --intrinsic-latency mode that is able to meter the latency of a system due to kernel / hypervisor. How to use it is explained at http://redis.io/topics/latency.
  • [NEW] New command BITPOS: find first bit set or clear in a bitmap.
  • [NEW] CONFIG REWRITE calls are now logged.
  • [NEW] AOF write errors (like no space on device) no longer abort Redis if the fsync policy is none or every second. The database enters a read-only mode where every write is refused with an error. Normal operations are restored as soon as Redis is able to append again data to the AOF file.
  • [NEW] Sentinel now accepts SHUTDOWN command.
  • Cluster changes:
  • [FIX] Bind the first interface listed in the "bind" configuration directive if any, in order to perform outgoing connections. This fixes Cluster usage when an address is bound but there are multiple interfaces that may be used to connect with other nodes.
  • [FIX] When an "Importing" slot is closed via CLUSTER SETSLOT NODE ... increment the configEpoch in the special case it is zero.
  • [FIX] Current transaction is invalidated on redirection errors.
  • [FIX] Abort if port does not allow for a valid cluster bus port that is always at fixed +10000 offset.
  • [FIX] Keys extraction algorithm fixed for ZUNIONSTORE/ZINTERSTORE and SORT.
  • [FIX] Better failover timeout and retry times: failover should now work reliabily when node-timeout is very small (a few milliseconds).
  • [FIX] Don't allow SORT GET/BY options in Cluster mode.
  • [FIX] Clear importing/migrating state when turning from master to slave role.
  • [FIX] Set slot error if we receive an update for a busy slot.
  • [FIX] Update node configEpoch on UPDATE messages.
  • [NEW] Support multi-key operations as long as keys resolve to the same hash slot, and the slot is not migrating, or it is migrating but all the mentioned keys are available.
  • [NEW] New DEBUG command CMDKEYS available to debug / test keys identification in Redis commands.
  • [NEW] redis-trib: create subcommand is now able to assign spare slaves.
  • [NEW] redis-trib: new subcommand 'call'. Exec command in all nodes.
  • Sentinel changes:
  • [FIX] Sentinel "IDONTKNOW" error removed as it does not made sense with the new Sentinel design. This error was actually a fix for a design error in the first implementation of Sentinel.
  • [FIX] Sentinel: added a missing exit() call to abort after config file checks at startup. This error was introduced with an improvement in a previous 2.8 release.
  • [FIX] Sentinel: better nodes fail over start time desynchronization to avoid split-brain during the voting process needed to get authorization to fail over. This means the system is less likely to need to retry and will fail over faster. No changes in behavior / correctness.
  • [NEW] Sentinel unit tests and framework. More tests needed and units must be improved in order to have less false positives, but it is a start and features a debugging console that is useful to fix tests or to inspect bugs causing tests failures.
  • [NEW] New Sentinel events: +/-monitor and +set used to monitor when an instance to monitor is added or removed, or when a configuration is modified via SENTINEL SET.

New in Redis 2.8.9 (Apr 22, 2014)

  • [NEW] The HyperLogLog data structure. You can read more about it in this blog post: http://antirez.com/news/75
  • [NEW] The Sorted Set data type has now support for lexicographic range queries, check the new commands ZRANGEBYLEX, ZLEXCOUNT and ZREMRANGEBYLEX, which are documented at http://redis.io.

New in Redis 2.8.8 (Mar 26, 2014)

  • [FIX] Fixed data loss when SHUTDOWN was used with a disk full condition.
  • [FIX] Fixed a memory leak in the SORT syntax error processing.
  • [FIX] When Sentinel down-after-milliseconds parameter is modified at runtime now it gets propagated to all the slaves and sentinel instances of the master.
  • [FIX] `install_server.sh` script finally fixed.
  • [FIX] Different fixes to maxclients handling.
  • [NEW] Sentinels are now able to send update messages in a peer-to-peer fashion even if no Redis instances are available. Now the Sentinel liveness property that the most updated configuration in a given partition is propagated to all the Sentinels is extended to partitions without reachable instances.
  • [NEW] Sentinel safety properties are now ensured in a crash-recovery system model since some state is persisted on disk before replying to other nodes, and reloaded at startup.
  • [NEW] Sentinel now uses CLIENT SETNAME so that it is easy to identify Sentinels using CLIENT LIST among other clients.
  • [NEW] Sentinel failure detection and reconnection code improved.
  • [NEW] Use all 24 bits (instead of 22) for the Redis objects LRU field. Note that the new LRU algorithm using eviction pools was not backported from unstable for safery / code maturity concerns.
  • [NEW] Majory speedup for the INFO command (it is now 6 times faster).
  • [NEW] More Sentinel unit tests.
  • [NEW] New command DEBUG ERROR returns the specified error. Example: DEBUG ERROR "LOADING database". This is handy to write Redis client libraries unit tests.
  • [NEW] redis-cli now supports multi-line editing via updated linenoise lib.

New in Redis 3.0.0 Beta 2 (Mar 12, 2014)

  • General:
  • [FIX] Sometimes the absolute config file path was obtained in a wrong way. This happened when there was a "dir" directive inside the config file and at the same time the configuration file was given as a relative path to redis-server or redis-sentinel executables.
  • [FIX] redis-cli: Automatically enter --slave mode when SYNC or PSYNC are called during an interactive session.
  • [FIX] BITCOUNT: fixed unaligned access causing issues in sparc and other archs not capable of dealing with unaligned accesses. This also makes the code faster in archs where unaligned accesses are allowed.
  • [FIX] Force INFO used_memory_peak to match peak memory. This generated some confusion among users even if it was not an actual bug.
  • [FIX] Fixed an critical EVALSHA script cache bug: scripts executed may not propagate to AOF / Slaves correctly under certain conditions. See issue #1549 at Github for more information.
  • [FIX] Fixed multiple bugs resulting into closing the link with master or slave during replication without good reasons. This will result in useless resynchronizations, or infinite loops where the replication link can't be established.
  • [FIX] Don't count the time needed to populate the buffers of clients waiting in MONITOR mode when populating the Slow Log entries.
  • [NEW] Redis-cli updated to use SCAN instead of random sampling via RANDOMKEY in order to implement --bigkeys feature. Moreover the implementation now supports pipelining and reports more information at the end of the scan. Much faster, much better. A special thank you to Michael Grunder for this improvement.
  • [NEW] redis-cli now supports a new --intrinsic-latency mode that is able to meter the latency of a system due to kernel / hypervisor. How to use it is explained at http://redis.io/topics/latency.
  • [NEW] New command BITPOS: find first bit set or clear in a bitmap.
  • [NEW] CONFIG REWRITE calls are now logged.
  • [NEW] AOF write errors (like no space on device) no longer abort Redis if the fsync policy is none or every second. The database enters a read-only mode where every write is refused with an error. Normal operations are restored as soon as Redis is able to append again data to the AOF file.
  • [NEW] Sentinel now accepts SHUTDOWN command.:
  • Cluster:
  • [FIX] Bind the first interface listed in the "bind" configuration directive if any, in order to perform outgoing connections. This fixes Cluster usage when an address is bound but there are multiple interfaces that may be used to connect with other nodes.
  • [FIX] When an "Importing" slot is closed via CLUSTER SETSLOT NODE ... increment the configEpoch in the special case it is zero.
  • [FIX] Current transaction is invalidated on redirection errors.
  • [FIX] Abort if port does not allow for a valid cluster bus port that is always at fixed +10000 offset.
  • [FIX] Keys extraction algorithm fixed for ZUNIONSTORE/ZINTERSTORE and SORT.
  • [FIX] Better failover timeout and retry times: failover should now work reliabily when node-timeout is very small (a few milliseconds).
  • [FIX] Don't allow SORT GET/BY options in Cluster mode.
  • [FIX] Clear importing/migrating state when turning from master to slave role.
  • [FIX] Set slot error if we receive an update for a busy slot.
  • [FIX] Update node configEpoch on UPDATE messages.
  • [NEW] Support multi-key operations as long as keys resolve to the same hash slot, and the slot is not migrating, or it is migrating but all the mentioned keys are available.
  • [NEW] New DEBUG command CMDKEYS available to debug / test keys identification in Redis commands.
  • [NEW] redis-trib: create subcommand is now able to assign spare slaves.
  • [NEW] redis-trib: new subcommand 'call'. Exec command in all nodes.:
  • Sentinel:
  • [FIX] Sentinel "IDONTKNOW" error removed as it does not made sense with the new Sentinel design. This error was actually a fix for a design error in the first implementation of Sentinel.
  • [FIX] Sentinel: added a missing exit() call to abort after config file checks at startup. This error was introduced with an improvement in a previous 2.8 release.
  • [FIX] Sentinel: better nodes fail over start time desynchronization to avoid split-brain during the voting process needed to get authorization to fail over. This means the system is less likely to need to retry and will fail over faster. No changes in behavior / correctness.
  • [NEW] Sentinel unit tests and framework. More tests needed and units must be improved in order to have less false positives, but it is a start and features a debugging console that is useful to fix tests or to inspect bugs causing tests failures.
  • [NEW] New Sentinel events: +/-monitor and +set used to monitor when an instance to monitor is added or removed, or when a configuration is modified via SENTINEL SET.

New in Redis 2.8.7 (Mar 10, 2014)

  • [FIX] Sometimes the absolute config file path was obtained in a wrong way. This happened when there was a "dir" directive inside the config file and at the same time the configuration file was given as a relative path to redis-server or redis-sentinel executables.
  • [FIX] redis-cli: Automatically enter --slave mode when SYNC or PSYNC are called during an interactive session.
  • [FIX] Sentinel "IDONTKNOW" error removed as it does not made sense with the new Sentinel design. This error was actually a fix for a design error in the first implementation of Sentinel.
  • [FIX] Sentinel: added a missing exit() call to abort after config file checks at startup. This error was introduced with an improvement in a previous 2.8 release.
  • [FIX] BITCOUNT: fixed unaligned access causing issues in sparc and other archs not capable of dealing with unaligned accesses. This also makes the code faster in archs where unaligned accesses are allowed.
  • [FIX] Sentinel: better nodes fail over start time desynchronization to avoid split-brain during the voting process needed to get authorization to fail over. This means the system is less likely to need to retry and will fail over faster. No changes in behavior / correctness.
  • [FIX] Force INFO used_memory_peak to match peak memory. This generated some confusion among users even if it was not an actual bug.
  • [NEW] Sentinel unit tests and framework. More tests needed and units must be improved in order to have less false positives, but it is a start and features a debugging console that is useful to fix tests or to inspect bugs causing tests failures.
  • [NEW] New Sentinel events: +/-monitor and +set used to monitor when an instance to monitor is added or removed, or when a configuration is modified via SENTINEL SET.
  • [NEW] Redis-cli updated to use SCAN instead of random sampling via RANDOMKEY in order to implement --bigkeys feature. Moreover the implementation now supports pipelining and reports more information at the end of the scan. Much faster, much better. A special thank you to Michael Grunder for this improvement.
  • [NEW] redis-cli now supports a new --intrinsic-latency mode that is able to meter the latency of a system due to kernel / hypervisor. How to use it is explained at http://redis.io/topics/latency.
  • [NEW] New command BITPOS: find first bit set or clear in a bitmap.
  • [NEW] CONFIG REWRITE calls are now logged.

New in Redis 2.8.6 (Feb 15, 2014)

  • [FIX] Fixed an critical EVALSHA script cache bug: scripts executed may not propagate to AOF / Slaves correctly under certain conditions. See issue #1549 at Github for more information.
  • [FIX] Fixed multiple bugs resulting into closing the link with master or slave during replication without good reasons. This will result in useless resynchronizations, or infinite loops where the replication link can't be established.
  • [FIX] Don't count the time needed to populate the buffers of clients waiting in MONITOR mode when populating the Slow Log entries.
  • [NEW] AOF write errors (like no space on device) no longer abort Redis if the fsync policy is none or every second. The database enters a read-only mode where every write is refused with an error. Normal operations are restored as soon as Redis is able to append again data to the AOF file.
  • [NEW] Sentinel now accepts SHUTDOWN command.

New in Redis 3.0.0 Beta 1 (Feb 12, 2014)

  • [NEW] Redis Cluster: a distributed implementation of a subset of Redis.
  • [NEW] New "embedded string" object encoding resulting in less cache misses. Big speed gain under certain work loads.
  • [NEW] WAIT command to block waiting for a write to be transmitted to the specified number of slaves.
  • [NEW] MIGRATE connection caching. Much faster keys migraitons.
  • [NEW] MIGARTE new options COPY and REPLACE.
  • [NEW] CLIENT PAUSE command: stop processing client requests for a specified amount of time.

New in Redis 2.8.5 (Feb 5, 2014)

  • [FIX] Fixed a replication bug caused by Lua scripts + expired keys: keys could expire in the middle of scripts causing non-deterministic behavior.
  • [FIX] MISCONFIG error if condition fixed, the server was no longer able to stop writes on RDB misconfiguration after this error was introduced.
  • [FIX] REDIS_AOF_REWRITE_MIN_SIZE is now 64mb like example redis.conf default.
  • [FIX] Perform fflush() before fsync() in rio.c (bug without actual effects).
  • [FIX] Don't log MONITOR clients as disconnecting slaves.
  • [FIX] SENTINEL MASTER arity check fixed. Crashed the Sentinel instance when the command was given without arguments.
  • [NEW] Allow CONFIG and SHUTDOWN while in stale-slave state.
  • [NEW] Support for configurable TCP listen(2) backlog size.
  • [NEW] redis-cli supports SCAN via the --scan and --pattern options.
  • [NEW] SENTINEL SET master quorum via runtime API implemented.

New in Redis 2.8.4 (Jan 14, 2014)

  • [FIX] Makefile compatibility with non common make variants improved.
  • [FIX] SDIFF crash in very unlikely to trigger state fixed.
  • [FIX] Config rewriting fixed: don't wipe options unknown to the rewrite process.
  • [FIX] Set TCP port to 0 works again to disable TCP networking.
  • [FIX] Fixed replication with old Redis instances as masters by not sending REPLCONF ACK to them.
  • [FIX] Fix keyspace notifications rewrite and CONFIG GET output.
  • [FIX] Fix RESTORE TTL handling in 32 bit systems (32 bit overflow).
  • [NEW] Sentinel now has a run time configuration API.
  • [NEW] Log when we lost connection with master or slave.
  • [NEW] When instance is turned from slave to master now inherits the old master replication offset when possible. This improves the Sentinel failover procedure.

New in Redis 2.8.3 (Dec 12, 2013)

  • [FIX] Sentinel instance role sampling fixed, the system is now more reliable during failover and when reconfiguring instances with non matching configuration.
  • [FIX] Inline requests are now handled even when terminated with just LF.
  • [FIX] Replication timeout handling greatly improved, now the slave is able to ping the master while removing the old data from memory, and while loading the new RDB file. This avoid false timeouts sensed by masters.
  • [FIX] Fixed a replication bug involving 32 bit instances and big datasets hard to compress that resulted into more than 2GB of RDB file sent.
  • [FIX] Return error for inline requests with unbalanced quotes.
  • [FIX] Publish the slave replication offset even when disconnected from the master if there is still a cached master instance.

New in Redis 2.8.2 (Dec 3, 2013)

  • [FIX] Sentinel better desynchronization to avoid split-brain elections where no Sentinel managed to get elected.
  • [FIX] Stop accepting writes on "MISCONF" error only if master, not slave.
  • [FIX] Reply to PING with an error on "MISCONF" errors.

New in Redis 2.8.1 (Nov 26, 2013)

  • [FIX] Fixed a bug in "new Sentinel" config propagation.
  • [FIX] Fixed a false positive in Redis tests.

New in Redis 2.8.0 (Nov 22, 2013)

  • Provides significant improvements like: Replication partial resynchronization, IPv6 support, config rewriting, keyspace changes notifications via Pub/Sub, and more.
  • Fixes:
  • [FIX] Fixed an error in rdbWriteRaw() that should have no practical impact.
  • [NEW] Log the new master when SLAVEOF command is used.
  • [NEW] Sentinel code synchronized with the unstable branch, the new Sentinel is a reimplementation that uses more reliable algorithms.

New in Redis 2.8.0 RC 5 (Oct 9, 2013)

  • [FIX] redis-cli: don't crash with --bigkeys when the key no longer exist.
  • [FIX] Allow AUTH / PING when disconnected from slave and serve-stale-data is no.
  • [FIX] PSYNC: safer handling of PSYNC requests with offsets in the future.
  • [FIX] Replication: Fix master timeout detection.
  • [FIX] Replication: Correctly install the write handler after successful PSYNC.

New in Redis 2.8.0 RC 4 (Sep 3, 2013)

  • [FIX] Fixed a serious EVAL memory leak in the Lua stack.
  • [FIX] Fixed server startup when no IPv6 address exists in any interface.
  • [FIX] Send MISCONFIG error when BGSAVE fails because can't fork.
  • [FIX] Memory efficiency with large (> a few kbytes) values improved considerably.
  • [NEW] DEBUG SDSLEN for sds memory debugging.

New in Redis 2.6.16 (Sep 3, 2013)

  • [FIX] Stop writes when fork() fails when trying to BGSAVE. BGSAVE errors were trapped only in the case the saving child failed, so the fork() error was no trapped as no child is created at all.
  • [FIX] Fix a serious memory efficiency regression, Redis 2.6.16 is significantly better with large values (>= a few kbytes) and will be able to store two times the amount of data compared to Redis 2.6.15 when values are in that range.
  • [FIX] Fixed an issue with Table conversion in the lua-cmsgpack library exposed by the Redis scripting engine.
  • [NEW] DEBUG SDSLEN was introduced to debug memory inefficiencies due to SDS allocation more easily.

New in Redis 2.8.0 RC 2 (Jul 31, 2013)

  • [FIX] Fixed a critical replication bug, see issue #1221.
  • [NEW] The new inline protocol now accepts quoted strings like, for example you can now type in a telnet session: set 'foo bar' "hello world\n".

New in Redis 2.8.0 RC 1 (Jul 18, 2013)

  • [NEW] Slaves are now able to partially resynchronize with the master, so most of the times a full resynchronization with the RDB creation in the master side is not needed when the master-slave link is disconnected for a short amount of time.
  • [NEW] Experimental IPv6 support.
  • [NEW] Slaves explicitly ping masters now, a master is able to detect a timed out slave independently.
  • [NEW] Masters can stop accepting writes if not enough slaves with a given maximum latency are connected.
  • [NEW] Keyspace changes notifications via Pub/Sub.
  • [NEW] CONFIG SET maxclients is now available.
  • [NEW] Ability to bind multiple IP addresses.
  • [NEW] Set process names so that you can recognize, in the "ps" command output, the listening port of an instance, or if it is a saving child.
  • [NEW] Automatic memory check on crash.
  • [NEW] CONFIG REWRITE is able to materialize the changes in the configuration operated using CONFIG SET into the redis.conf file.
  • [NEW] More NetBSD friendly code base.
  • [NEW] PUBSUB command for Pub/Sub introspection capabilities.
  • [NEW] EVALSHA can now be replicated as such, without requiring to be expanded to a full EVAL for the replication link.
  • [NEW] Better Lua scripts error reporting.
  • [NEW] SDIFF performance improved.
  • [FIX] A number of bugfixes.

New in Redis 2.6.14 (Jul 18, 2013)

  • [FIX] AOF bug: expire could be removed from key on AOF rewrite.
  • [FIX] Allow writes from scripts called by AOF loading in read-only slaves.
  • [FIX] Sentinel: parse new version of INFO replication output correctly.
  • [NEW] Reset masterauth if an empty string is configured.

New in Redis 2.6.13 (May 1, 2013)

  • UPGRADE URGENCY: MODERATE, nothing very critical but upgrading is suggested if you experienced:
  • Strange issues with Lua scripting.
  • Not reconfigured reappearing master using Sentinel.
  • Server continuously trying to save on save error.
  • This version of Redis may also help with AOF and slow / busy disks and latency issues.
  • FIX: Throttle BGSAVE attempt on saving error.
  • FIX: redis-cli: raise error on bad command line switch.
  • FIX: Redis/Jemalloc Gitignore were too aggressive.
  • FIX: Test: fix RDB test checking file permissions.
  • FIX: Sentinel: always redirect on master->slave transition.
  • FIX: Lua updated to version 5.1.5. Fixes rare scripting issues.
  • NEW: AOF: improved latency figures with slow/busy disks.
  • NEW: Sentinel: turn old master into a slave when it comes back.
  • NEW: More explicit panic message on out of memory.
  • NEW: redis-cli: --latency-history mode implemented.

New in Redis 2.6.12 (Mar 30, 2013)

  • UPGRADE URGENCY: MODERATE, nothing very critical but a few non trivial bugs.
  • BUGFIX: redis-cli --bigkeys: don't crash with empty DB.
  • BUGFIX: stop-writes-on-bgsave-error now works in redis.conf
  • BUGFIX: Don't crash at startup if RDB is there but can't be opened.
  • BUGFIX: Initial value for master_link_down_since_seconds is now huge.
  • BUGFIX: Allow SELECT while loading the DB.
  • BUGFIX: Don't replicate/AOF an empty MULTI/EXEC if the transaction is empty or containing just read-only commands.
  • BUGFIX: EXPIRE should not be able to resurrect keys (see issue #1026).
  • IMPROVED: Extended SET back ported from Redis 2.8 / unstable See http://redis.io/commands/set for more information.
  • IMPROVED: Test suite improved.

New in Redis 2.6.11 (Mar 12, 2013)

  • UPGRADE URGENCY: LOW, however updating is encouraged if you have many instances per server and you want to lower the CPU / energy usage.
  • BUGFIX: Replication: more strict error checking for master PING reply.
  • BUGFIX: redis-cli: use keepalive socket option for improved reliability.
  • BUGFIX: Allow AUTH while loading the DB in memory.
  • BUGFIX: Don't segfault on unbalanced quotes while parsing config file.
  • IMPROVED: serverCron() frequency is now a runtime parameter (was REDIS_HZ).
  • IMPROVED: Use a lot less CPU when idle, even with many configured DBs.

New in Redis 2.6.10 (Feb 11, 2013)

  • UPGRADE URGENCY: MODERATE, this release contains many non-critical fixes and many small improvements.
  • BUGFIX: redis-cli --rdb, fixed when the server sends newlines to ping.
  • BUGFIX: redis-cli, minor fixes on connection handling, prompt.
  • BUGFIX: Slow log: don't log EXEC, just executed commands.
  • BUGFIX: On failed shutdown don't try again and again compulsively.
  • BUGFIX: Fix build on sunos without backtrace().
  • BUGFIX: UNSUBSCRIBE and PUNSUBSCRIBE: always provide a reply (see 742e580)
  • BUGFIX: Lua struct library was broken, upgraded.
  • BUGFIX: Fix a bug in srandmemberWithCountCommand() with count argument.
  • BUGFIX: Test: disable clients timeout to prevent issues on slow systems.
  • BUGFIX: Sentinel: don't advertise the promoted slave as master too early.
  • IMPROVED: Whitelist SIGUSR1, see http://redis.io/topics/signals.
  • IMPROVED: Simpler to understand redis-cli --bigkeys output.
  • IMPROVED: Test now works with tclsh > 8.5.
  • IMPROVED: Added option to turn of the Nagle algorithm in slave socket.
  • IMPROVED: Optionally use SO_KEEPALIVE to detect dead peers.

New in Redis 2.6.9 (Jan 17, 2013)

  • UPGRADE URGENCY: MODERATE if you use replication.
  • [BUGFIX]: Changing master at runtime (SLAVEOF command) in presence of network problems, or in very rapid succession, could result in non-critical problems (GitHub Issue #828).
  • [IMPROVED]: CLINGET GETNAME and SETNAME to set and query connection names reported by CLIENT LIST. Very useful for debugging of problems.
  • [IMPROVED]: redis-cli is now able to transfer an RDB file from a remote server to a local file using the --rdb command line option.

New in Redis 2.6.8 (Jan 11, 2013)

  • [BUGFIX]: Multiple fixes for EVAL (issue #872).
  • [BUGFIX]: Fix overflow in mstime() in redis-cli and benchmark.
  • [BUGFIX]: Fix Linux / PPC64 behavior by correcting endianess detection.
  • [BUGFIX]: Fix NetBSD build by defining _XOPEN_SOURCE appropriately.
  • [BUGFIX]: Added missing license and copyright in a few places.
  • [BUGFIX]: Better error reporting when fd event creation fails.

New in Redis 2.6.7 (Dec 3, 2012)

  • [BUGFIX]: Don't crash if BLPOP & co are called with the same key repeated multiple times (Issue #801).

New in Redis 2.6.6 (Nov 29, 2012)

  • [BUGFIX]: Jemalloc updated to 3.2.0.

New in Redis 2.6.5 (Nov 26, 2012)

  • [IMPROVED]: RDB/AOF childern now log amount of additional memory used because of copy on write.
  • [BUGFIX]: MIGRATE non critical fixes (see commits for details).
  • [BUGFIX]: MULTI/EXEC: now EXEC aborts on errors before EXEC.
  • [BUGFIX]: Fix integer overflow in zunionInterGenericCommand resulting into Z[INTER|UNION][STORE] commands to crash under extremely unlikely conditions (almost impossible in real world).
  • [BUGFIX]: EVALSHA is now case insensitive (and will not crash).

New in Redis 2.6.4 (Nov 9, 2012)

  • [IMPROVED] BSD license and copyright notice added to every .c and .h file.

New in Redis 2.6.3 (Nov 7, 2012)

  • [BUGFIX] Fixed 32 bit build on Linux systems.
  • [BUGFIX] MONITOR and CLIENT LIST: propertly display unix socket clients.
  • [IMPROVED] redis-cli inline help updated.
  • [IMPROVED] Marginally more robust AOF child handling.
  • [IMPROVED] Fixed a few typos in comments.

New in Redis 2.6.2 (Oct 27, 2012)

  • [BUGFIX] The compilation fix for RHLE5 in 2.6.1 was broken. Fixed.
  • [IMPROVED] Linenoise updated, now supports Ctrl+w.

New in Redis 2.6.0 (Oct 23, 2012)

  • [BUGFIX] Allow AUTH when server is in -BUSY state because of a slow script.
  • [BUGFIX] MULTI/EXEC flow now makes sense when observed in MONITOR
  • [BUGFIX] SCRIPT KILL now uses different error prefixes for different errors.
  • [BUGFIX] Default memory limit for 32bit archs lowered from 3.5 to 3 GB.
  • [BUGFIX] redis-check-dump is now compatible with RDB files generated by 2.6.
  • [IMPROVED] New field in INFO: slave_read_only.

New in Redis 2.4.11 (Apr 20, 2012)

  • [BUGFIX] Fixed a problem with aeWait() implementation. May cause a crash under non easy to replicate condiitons. See issue #267 on github.
  • [BUGFIX] SORT with GET/BY option fetching expiring keys fixed. Issue #460.
  • [BUGFIX] INFO field master_link_down_since_seconds initialized correctly.
  • [FEATURE] redis-cli back ported from Redis unstable. Now has support for --bigkeys (to sample the DB for very large keys), --slave to simulate a slave instance.

New in Redis 2.4.6 (Jan 12, 2012)

  • [BUGFIX] Fixed issue #141 part 1: Possible protocol desyncs when clients send wrong protocol is now fixed. (See issue 141 for more details)
  • [BUGFIX] Fixed issue #141 part 2: Connection of multiple slaves used to result from time to time into corrupted protocol send to slaves connected after the first one. (See issue 141 for more details)
  • [BUGFIX] Do not propagate DEBUG LOADAOF.
  • New INFO contains information such as ip/port/state for every conneced slave.
  • Show GCC version in INFO output.

New in Redis 2.4.5 (Jan 5, 2012)

  • [BUGFIX] Fixed a ZUNIONSTORE/ZINTERSTORE bug that can cause a NaN to be inserted as a sorted set element score. This happens when one of the elements has +inf/-inf score and the weight used is 0.
  • [BUGFIX] Fixed memory leak in CLIENT INFO.
  • [BUGFIX] Fixed a non critical SORT bug (Issue 224).
  • [BUGFIX] Fixed a replication bug: now the timeout configuration is respected during the connection with the master.
  • quiet option implemented in the Redis test.

New in Redis 2.4.4 (Dec 14, 2011)

  • [BUGFIX] jemalloc upgraded to version 2.2.5, previous versions had a potentially serious issue when allocating big memory areas, something that Redis actually does. However we never received bug reports that appear to be caused by jemalloc.
  • [BUGFIX] DISCARD now clears DIRTY_CAS flag in the client. Now the next transaction will not fail if the previous transaction used WATCH and the key was touched.
  • CLIENT LIST output modified to include the last command executed by clients.
  • Better bug report on crash.
  • Protocol errors are now logged for loglevel >= verbose.
  • Two new INFO fields related to AOF, that can be useful when investigating Redis issues.

New in Redis 2.2.11 (Jul 13, 2011)

  • Solved a never reported but possibly critical bug in the AOF and RDB persistence, introduced with the new version of the iterator: In very rare circumstances the AOF (after rerwite) or the rdb file may contain the same key more than one time.

New in Redis 1.02 (Nov 18, 2009)

  • Fixed compilation issues in Mac OS X Snow Leopard against 32 bit binary builds.

New in Redis 1.01 (Oct 3, 2009)

  • This is a bug fix release addressing just a single moderately critical bug:
  • 2009-09-17 maxmemory didn't worked in 64 systems for values > 4GB since it used to be an unsigned int. Fixed

New in Redis Beta 8 (Mar 28, 2009)

  • Redis beta 8 released, command line client, MGET, memory usage aware, INFO, stability fixes, updated client libraries,