Redis 2.8 release notes
=======================

** IMPORTANT ** Check the 'Migrating from 2.6 to 2.8' section at the end of
                this file for information about what changed between 2.6 and
                2.8 and how this may affect your application.

--------------------------------------------------------------------------------
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.
--------------------------------------------------------------------------------

--[ Redis 2.8.0 ] Release date: 22 Nov 2013

# UPGRADE URGENCY: LOW, unless you want to upgrade to new Sentinel code.

* [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.

--[ Redis 2.8 Release Candidate 6 (2.7.106) ] Release date: 6 Nov 2013

This is the 6th release candidate of Redis 2.8 (official version is 2.7.106).

# UPGRADE URGENCY: LOW, only new features back ported, no fixes.

* [NEW] SCAN, SSCAN, HSCAN, ZSCAN commands.

--[ Redis 2.8 Release Candidate 5 (2.7.105) ] Release date: 9 Oct 2013

This is the 5th release candidate of Redis 2.8 (official version is 2.7.105).
Important bugs fixed inside.

# UPGRADE URGENCY: HIGH because of many non critical replication bugs fixed.

* [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.

--[ Redis 2.8 Release Candidate 4 (2.7.104) ] Release date: 30 Aug 2013

This is the fourth release candidate of Redis 2.8 (official version is 2.7.104).
Important bugs fixed inside.

# UPGRADE URGENCY: HIGH because of the EVAL memory leak.

* [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.

--[ Redis 2.8 Release Candidate 3 (2.7.103) ] Release date: 19 Aug 2013

This is the third release candidate of Redis 2.8 (official version is 2.7.103).
Important bugs fixed inside.

# UPGRADE URGENCY: HIGH

* [FIX] Improved expired keys collection algorithm. Even under heavy load keys
        to be expired can't accumulate because of lack of CPU time.
* [FIX] Replication speed regression fixed (issue #1238).
* [FIX] Fixed an hard to trigger PSYNC bug.
* [FIX] Fixed Issue #1240, ZUNIONSTORE could lead to wrong result.
* [NEW] Add per-db average TTL information in INFO output.
* [NEW] redis-benchmark improvements.
* [NEW] dict.c API wrong usage detection.

--[ Redis 2.8 Release Candidate 2 (2.7.102) ] Release date: 30 Jul 2013

This is the second release candidate of Redis 2.8 (official version is 2.7.102).
Important bugs fixed inside.

# UPGRADE URGENCY: HIGH

* [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".

--[ Redis 2.8 Release Candidate 1 (2.7.101) ] Release date: 18 Jul 2013

This is the first release candidate of Redis 2.8 (official version is 2.7.101).

The following is a list of improvements in Redis 2.8, compared to Redis 2.6.

* [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.

Migrating from 2.6 to 2.8
=========================

Redis 2.6 is mostly a strict subset of 2.8. However there are a few things
that you should be aware of:

The following commands changed behavior:

    * SORT with ALPHA now sorts according to local collation locale if no STORE
      option is used.
    * ZADD/ZINCRBY are now able to accept a bigger range of values as valid
      scores, that is, all the values you may end having as a result of
      calling ZINCRBY multiple times.
    * Many errors are now prefixed by a more specific error code instead of
      the generic -ERR, for example -WRONGTYPE, -NOAUTH, ...
    * PUBLISH called inside Lua scripts is now correctly propagated to slaves.

The following redis.conf and CONFIG GET / SET parameters changed:

    * logfile now uses the empty string in order to log to standard output,
      so 'logfile stdout' is now invalid, use 'logfile ""' instead.

The following INFO fields changed format in a non-backward compatible way:

    * The list of slaves in INFO is now in field=value format.

Replication:

    Redis 2.8 can be used as slave for Redis 2.6, but doing this is only
    a good idea for the short amount of time needed to upgrade your servers.
    We suggest to update both master and slaves at about the same time.

--------------------------------------------------------------------------------

Credits: Where not specified the implementation and design is done by
Salvatore Sanfilippo. Thanks to VMware and Pivotal for making all
this possible. Also many thanks to all the other contributors and the amazing
community we have.

See commit messages for more credits.

Cheers,
Salvatore
