00-RELEASENOTES 12.6 KB
Newer Older
1
Redis 2.6 release notes
2
=======================
3

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

8 9 10 11 12
--------------------------------------------------------------------------------
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.
A
antirez 已提交
13
HIGH:     There is a critical bug that may affect a subset of users. Upgrade!
14 15 16
CRITICAL: There is a critical bug affecting MOST USERS. Upgrade ASAP.
--------------------------------------------------------------------------------

A
antirez 已提交
17
--[ Redis 2.6.4 ]
A
antirez 已提交
18

A
antirez 已提交
19
UPGRADE URGENCY: LOW
A
antirez 已提交
20

A
antirez 已提交
21 22 23 24 25
* [IMPROVED] BSD license and copyright notice added to every .c and .h file.

--[ Redis 2.6.2 ]

UPGRADE URGENCY: LOW
A
antirez 已提交
26 27 28 29

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

A
antirez 已提交
30 31
---[ Redis 2.6.1 ]

A
antirez 已提交
32 33
UPGRADE URGENCY: LOW

A
antirez 已提交
34 35
* [BUGFIX]   Compilation on Linux < 2.6.17 or glibc < 2.6 fixed (RHLE5 & co).

A
antirez 已提交
36 37
---[ Redis 2.6.0 ]

A
antirez 已提交
38 39
UPGRADE URGENCY: HIGH

A
antirez 已提交
40 41 42 43 44 45 46
* [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.

A
antirez 已提交
47 48 49 50 51 52 53 54 55 56 57 58
---[ 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.

A
antirez 已提交
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
---[ 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.

A
antirez 已提交
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
---[ 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.

A
antirez 已提交
105 106 107 108 109 110 111 112 113 114 115 116 117
---[ 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.

118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
---[ 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.

A
antirez 已提交
136 137 138 139 140 141 142 143
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.
A
antirez 已提交
144 145 146 147 148
* [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.
A
antirez 已提交
149
* Now when slave-serve-stale-data is set to yes and the master is down, instead
A
antirez 已提交
150
  of reporting a generic error Redis replies with -MASTERDOWN.
A
antirez 已提交
151

A
antirez 已提交
152 153 154 155 156 157 158 159 160
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.

A
antirez 已提交
161 162 163 164 165 166 167 168
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.
169

A
antirez 已提交
170 171
An overview of new features and changes in Redis 2.6.x
======================================================
172 173 174 175 176 177 178 179

* 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, ...).
180 181
* Better memory usage for "small" lists, ziplists and hashes when fields or
  values contain small integers.
182
* Read only slaves.
183
* New bit opeations: BITCOUNT and BITOP commands.
A
antirez 已提交
184
* Clients max output buffer soft and hard limits. You can specifiy different
185
  limits for different classes of clients (normal,pubsub,slave).
186 187 188
* 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.
189 190 191 192 193 194
* 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.
195 196 197 198 199 200
* 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.
201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216
* 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.
217 218
* Better support for big endian and *BSD systems.
* Build system improved.
219

220 221 222 223 224 225 226
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.
T
Tobias Schwab 已提交
227
* 2.6 slaves can be attached to 2.4 masters, but not the contrary, and only
228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259
  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)

260 261 262 263 264 265 266 267 268 269 270
--------------------------------------------------------------------------------

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