X-Git-Url: https://git.saurik.com/redis.git/blobdiff_plain/184b8e78c62030f4489f8be8607a738fa0122bbe..e95ca66320a97d4a7415ce5dda942130d6338f85:/00-RELEASENOTES diff --git a/00-RELEASENOTES b/00-RELEASENOTES index f379a244..69a9edcf 100644 --- a/00-RELEASENOTES +++ b/00-RELEASENOTES @@ -1,39 +1,137 @@ Redis 2.6 release notes +======================= -Migrating from 2.4 to 2.6 -========================= +** 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. -Redis 2.4 is mostly a strict subset of 2.6. However there are a few things -that you should be aware of: +-------------------------------------------------------------------------------- +Upgrade urgency levels: -* You can't use .rdb and AOF files generated with 2.6 into a 2.4 instance. -* 2.4 slaves can be attached to 2.6 masters, but not the contrary, and only - for the time needed to perform the version upgrade. +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. +-------------------------------------------------------------------------------- -There are also a few API differences, that are unlikely to cause problems, -but it is better to keep them in mind: +--[ Redis 2.6.4 ] -* 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. +UPGRADE URGENCY: LOW -Also the following redis.conf and CONFIG GET / SET parameters changed name: +* [IMPROVED] BSD license and copyright notice added to every .c and .h file. - * 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) +--[ Redis 2.6.2 ] + +UPGRADE URGENCY: LOW + +* [BUGFIX] The compilation fix for RHLE5 in 2.6.1 was broken. Fixed. +* [IMPROVED] Linenoise updated, now supports Ctrl+w. + +---[ Redis 2.6.1 ] + +UPGRADE URGENCY: LOW + +* [BUGFIX] Compilation on Linux < 2.6.17 or glibc < 2.6 fixed (RHLE5 & co). + +---[ Redis 2.6.0 ] + +UPGRADE URGENCY: HIGH + +* [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 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) ] ---------- -CHANGELOG ---------- +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) ======================================================= @@ -43,6 +141,13 @@ 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) ======================================================= @@ -75,8 +180,12 @@ An overview of new features and changes in Redis 2.6.x * 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 @@ -108,6 +217,46 @@ An overview of new features and changes in Redis 2.6.x * 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