-This is Redis 2.3.x.
+Redis 2.6 release notes
+=======================
-It was forked from 2.2 branch a few weeks ago, and is going to be the playground
-for many new developments, especially related to replacing the VM with something
-better.
+** IMPORTANT ** Check the 'Migrating from 2.4 to 2.6' section at the end of
+ this file for information about what changed between 2.4 and
+ 2.6 and how this may affect your application.
-VM is already completely removed from this release, and instead diskstore was
-implemented. You can read more about it here:
+--------------------------------------------------------------------------------
+Upgrade urgency levels:
-http://groups.google.com/group/redis-db/browse_thread/thread/d444bc786689bde9
+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.
+--------------------------------------------------------------------------------
-This Redis version is not intented for production environments.
+$--[ Redis 2.6.2 ]
+
+* [BUGFIX] The compilation fix for RHLE5 in 2.6.1 was broken. Fixed.
+* [IMPROVED] Linenoise updated, now supports Ctrl+w.
+
+---[ Redis 2.6.1 ]
+
+* [BUGFIX] Compilation on Linux < 2.6.17 or glibc < 2.6 fixed (RHLE5 & co).
+
+---[ Redis 2.6.0 ]
+
+* [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.
+
+---[ Redis 2.5.14 (2.6 Release Candidate 8) ]
+
+* [BUGFIX] Fixed compilation on FreeBSD.
+* [IMPROVED] SRANDMEMBER <count> that returns multiple random elements.
+* [IMPROVED] Sentinel backported to 2.6. It will be taken in sync with 2.8.
+* [IMPROVED] Helper function for scripting to return errors and status replies.
+* [IMPROVED] SORT by nosort [ASC|DESC] uses sorted set elements ordering.
+* [BUGFIX] Better resistence to system clock skew.
+* [IMPROVED] Warn the user when the configured maxmemory seems odd.
+* [BUGFIX] Hashing function is now murmurhash2 for security purposes.
+* [IMPROVED] Install script no longer uses a template but redis.conf itself.
+
+---[ Redis 2.5.13 (2.6 Release Candidate 7) ]
+
+UPGRADE URGENCY: HIGH
+
+* [BUGFIX] Theoretical bug in ziplist fixed.
+* [BUGFIX] Better out of memory handling (Log produced in log file).
+* [BUGFIX] Incrementally flush RDB file on slave side while performing the
+ first synchronization with the master. This makes Redis less
+ blocking in environments where disk I/O is slow.
+* [BUGFIX] Don't crash with Lua's redis.call() without arguments.
+* [BUGFIX] Don't crash after a big number of Lua calls on 32 bit systems
+ because of a failed assertion.
+* [BUGFIX] Fix SORT behaviour when called from scripting.
+* [BUGFIX] Adjust slave PING period accordingly to REDIS_HZ define.
+* [BUGFIX] BITCOUNT: fix crash on overflowing arguments.
+* [BUGFIX] Return an error when SELECT argument is not an integer.
+* [BUGFIX] Blocking operations on lists were completely reimplemented for
+ correctness. Now blocking list ops and pushes originated from
+ Lua scripts will play well together and will be replicated
+ and transmitted to the AOF correctly.
+* [IMPROVED] Send async PING before starting replication to avoid blocking if
+ master allows us to connect but it is actually not able to reply.
+* [IMPROVED] Support slave-priority for Redis Sentinel.
+* [IMPROVED] Hiredis library updated.
+
+---[ Redis 2.5.12 (2.6 Release Candidate 6) ]
+
+UPGRADE URGENCY: MODERATE.
+
+* [BUGFIX] Fixed a timing attack on AUTH (Issue #560).
+* [BUGFIX] Don't assume that "char" is signed.
+* [BUGFIX] Check that we have connection before enabling pipe mode.
+* [BUGFIX] Use the optimized version of the function to convert a double to
+ its string representation. Compilation was disabled because of
+ a typo in the #if statement.
+* [IMPROVED} REPLCONF internal command introduced, now INFO shows slaves with
+ correct port numbers. This makes 2.5.12 Redis Sentinel compatible.
+* [IMPROVED] Truncate short write from the AOF for a cleaner restart. On short
+ writes (for instance out of space) Redis will now try to remove
+ the half-written data so that the next restart will work without
+ the need for the "redis-check-aof" utility.
+* [IMPROVED] New in INFO: aof_last_bgrewrite_status
+* [IMPROVED] Allow Pub/Sub in contexts where other commands are blocked.
+* [BUGFIX] mark fd as writable when EPOLLERR or EPOLLHUP is returned by
+ epoll_wait.
+
+---[ Redis 2.5.11 (2.6 Release Candidate 5) ]
+
+UPGRADE URGENCY: HIGH.
+
+* [BUGFIX] Fixed Hash corruption when loading an RDB file generated by
+ previous versions of Redis that encoded hashes using
+ a different ziplist encoding format for small integers.
+ All the fileds that are integers in the range 0-255 may not
+ be recognized, or duplicated un updates, causing a crash
+ when the ziplist is converted to a real hash. (Issue #547).
+* [BUGFIX] Fixed the count of memory used by output buffers in the
+ setDeferredMultiBulkLength() function.
+
+---[ Redis 2.5.10 (2.6 Release Candidate 4) ]
+
+UPGRADE URGENCY: HIGH.
+
+* [BUGFIX] Allow PREFIX to be overwritten on "make install".
+* [BUGFIX] Run the test with just one client if the computer is slow.
+* [BUGFIX] Event port support in our event driven libray.
+* [BUGFIX] Jemalloc updated to 3.0.0. This fixes a possibly AOF rewrite issue.
+ See https://github.com/antirez/redis/issues/504 for info.
+* [BUGFIX] Fixed issue #516: ZINTERSTORE / ZUNIONSTORE with mixed sets/zsets.
+* [BUGFIX] Set fd to writable when poll(2) detects POLLERR or POLLHUP event.
+* [BUGFIX] Fixed RESTORE hash failure (Issue #532).
+* [IMPROVED] Allow an AOF rewrite buffer > 2GB (Related to issue #504).
+* [IMPROVED] Server cron function frequency is now configurable (REDIS_HZ).
+* [IMPROVED] Better, less blocking expired keys collection algorithm.
+* [FEATURE] New commands: BITOP and BITCOUNT.
+* [FEATURE] redis-cli --pipe for mass import.
+
+What's new in Redis 2.5.9 (aka 2.6 Release Candidate 3)
+=======================================================
+
+UPGRADE URGENCY: critical, upgrade ASAP.
+
+* [BUGFIX] Fix for issue #500 (https://github.com/antirez/redis/pull/500).
+ Redis 2.6-RC1 and RC2 may corrupt ziplist-encoded sorted sets
+ produced by Redis 2.4.x.
+* [BUGFIX] Fixed several bugs in init.d script.
+* [BUGFIX] syncio.c functions modified for speed and correctness. On osx
+ (and possibly other BSD-based systems) the slave would block on
+ replication to send the SYNC command when the master was not
+ available. This is fixed now, but was not affecting Linux installs.
+* Now when slave-serve-stale-data is set to yes and the master is down, instead
+ of reporting a generic error Redis replies with -MASTERDOWN.
+
+What's new in Redis 2.5.8 (aka 2.6 Release Candidate 2)
+=======================================================
+
+UPGRADE URGENCY: high for all the users of the KEYS command, otherwise low.
+
+* [BUGFIX] Fix for KEYS command: if the DB contains keys with expires the KEYS
+ command may return the wrong output, having duplicated or missing
+ keys. See issue #487 and #488 on github for details.
+
+What's new in Redis 2.5.7 (aka 2.6 Release Candidate 1)
+=======================================================
+
+UPGRADE URGENCY: upgrade not recommended because this is an RC release.
+
+* This is the first release candidate for Redis 2.6. We are not aware of
+ bugs, but part of this code is young and was never tested in production
+ environments, so handle with care.
+
+An overview of new features and changes in Redis 2.6.x
+======================================================
+
+* Server side Lua scripting, see http://redis.io/commands/eval
+* Virtual Memory removed (was deprecated in 2.4)
+* Hardcoded limits about max number of clients removed.
+* AOF low level semantics is generally more sane, and especially when used
+ in slaves.
+* Milliseconds resolution expires, also added new commands with milliseconds
+ precision (PEXPIRE, PTTL, ...).
+* Better memory usage for "small" lists, ziplists and hashes when fields or
+ values contain small integers.
+* Read only slaves.
+* New bit opeations: BITCOUNT and BITOP commands.
+* Clients max output buffer soft and hard limits. You can specifiy different
+ limits for different classes of clients (normal,pubsub,slave).
+* More incremental (less blocking) expired keys collection algorithm, in
+ practical terms this means that Redis is more responsive when a very
+ big number of keys expire about at the same time.
+* AOF is now able to rewrite aggregate data types using variadic commands,
+ often producing an AOF that is faster to save, load, and is smaller in size.
+* Every redis.conf directive is now accepted as a command line option for the
+ redis-server binary, with the same name and number of arguments.
+* Hash table seed randomization for protection against collisions attacks.
+* Performances improved when writing large objects to Redis.
+* Integrated memory test, see redis-server --test-memory.
+* INCRBYFLOAT and HINCRBYFLOAT commands.
+* New DUMP, RESTORE, MIGRATE commands (back ported from Redis Cluster to 2.6).
+* CRC64 checksump in RDB files.
+* Better MONITOR output and behavior (now commands are logged before execution).
+* "Software Watchdog" feature to debug latency issues.
+* Significant parts of the core refactored or rewritten. New internal APIs
+ and core changes allowed to develop Redis Cluster on top of the new code,
+ however for 2.6 all the cluster code was removed, and will be released with
+ Redis 3.0 when it is more complete and stable.
+* Redis ASCII art logo added at startup.
+* Crash report on memory violation or failed asserts improved significantly
+ to make debugging of hard to catch bugs simpler.
+* redis-benchmark improvements: ability to run selected tests,
+ CSV output, faster, better help.
+* redis-cli improvements: --eval for comfortable development of Lua scripts.
+* SHUTDOWN now supports two optional arguments: "SAVE" and "NOSAVE".
+* INFO output split into sections, the command is now able to just show
+ pecific sections.
+* New statistics about how many time a command was called, and how much
+ execution time it used (INFO commandstats).
+* More predictable SORT behavior in edge cases.
+* Better support for big endian and *BSD systems.
+* Build system improved.
+
+Migrating from 2.4 to 2.6
+=========================
+
+Redis 2.4 is mostly a strict subset of 2.6. However there are a few things
+that you should be aware of:
+
+* You can't use .rdb and AOF files generated with 2.6 into a 2.4 instance.
+* 2.6 slaves can be attached to 2.4 masters, but not the contrary, and only
+ for the time needed to perform the version upgrade.
+
+There are also a few API differences, that are unlikely to cause problems,
+but it is better to keep them in mind:
+
+* SORT now will refuse to sort in numerical mode elements that can't be parsed
+ as numbers.
+* EXPIREs now all have millisecond resolution (but this is very unlikely to
+ break code that was not conceived exploting the previous resolution error
+ in some way.)
+* INFO output is a bit different now, and contains empty lines and comments
+ starting with '#'. All the major clients should be already fixed to work
+ with the new INFO format.
+* Slaves are only read-only by default (but you can change this easily
+ setting the "slave-read-only" configuration option to "no" editing your
+ redis.conf or using CONFIG SET.
+
+The following INFO fields were renamed for consistency:
+
+ changes_since_last_save -> rdb_changes_since_last_save
+ bgsave_in_progress -> rdb_bgsave_in_progress
+ last_save_time -> rdb_last_save_time
+ last_bgsave_status -> rdb_last_bgsave_status
+ bgrewriteaof_in_progress -> aof_rewrite_in_progress
+ bgrewriteaof_scheduled -> aof_rewrite_scheduled
+
+The following redis.conf and CONFIG GET / SET parameters changed:
+
+ * hash-max-zipmap-entries, now replaced by hash-max-ziplist-entries
+ * hash-max-zipmap-value, now replaced by hash-max-ziplist-value
+ * glueoutputbuf option was now completely removed (was deprecated)
+
+--------------------------------------------------------------------------------
+
+Credits: Where not specified the implementation and design are done by
+Salvatore Sanfilippo and Pieter Noordhuis. Thanks to VMware 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