]> git.saurik.com Git - redis.git/blame - 00-RELEASENOTES
When closing the MDB DBI, do it in a transaction.
[redis.git] / 00-RELEASENOTES
CommitLineData
c2513ecb 1Redis 2.6 release notes
69396249 2=======================
c2513ecb 3
69396249 4** IMPORTANT ** Check the 'Migrating from 2.4 to 2.6' section at the end of
5 this file for information about what changed between 2.4 and
6 2.6 and how this may affect your application.
c2513ecb 7
1a3e9d95 8--------------------------------------------------------------------------------
9Upgrade urgency levels:
10
11LOW: No need to upgrade unless there are new features you want to use.
12MODERATE: Program an upgrade of the server, but it's not urgent.
44038626 13HIGH: There is a critical bug that may affect a subset of users. Upgrade!
1a3e9d95 14CRITICAL: There is a critical bug affecting MOST USERS. Upgrade ASAP.
15--------------------------------------------------------------------------------
16
d9301f05 17--[ Redis 2.6.7 ]
18
19UPGRADE URGENCY: MODERATE (unless you BLPOP using the same key multiple times).
20
21* [BUGFIX] Don't crash if BLPOP & co are called with the same key repeated
22 multiple times (Issue #801).
23
b41f4e5a 24--[ Redis 2.6.6 ]
25
26UPGRADE URGENCY: CRITICAL if you experienced one more more crashes.
27 MODERATE if Redis is running fine for you.
28
29* [BUGFIX] Jemalloc updated to 3.2.0.
30
3ccfb5a4 31--[ Redis 2.6.5 ]
32
33UPGRADE URGENCY: MODERATE
34
35Warning: this release of Redis introduces a different behavior in MULTI/EXEC
36 handling of errors. This was done because the new behavior is safer
37 compared to the old one, and should not break any code targeting
38 Redis 2.6 in a critical way.
39
40 For more information check http://redis.io/topics/transactions
41
42* [IMPROVED] RDB/AOF childern now log amount of additional memory used
43 because of copy on write.
44* [BUGFIX] MIGRATE non critical fixes (see commits for details).
45* [BUGFIX] MULTI/EXEC: now EXEC aborts on errors before EXEC.
46* [BUGFIX] Fix integer overflow in zunionInterGenericCommand resulting
47 into Z[INTER|UNION][STORE] commands to crash under extremely
48 unlikely conditions (almost impossible in real world).
49* [BUGFIX] EVALSHA is now case insensitive (and will not crash).
50
2861cd84 51--[ Redis 2.6.4 ]
89514f80 52
2861cd84 53UPGRADE URGENCY: LOW
89514f80 54
2861cd84 55* [IMPROVED] BSD license and copyright notice added to every .c and .h file.
56
57--[ Redis 2.6.2 ]
58
59UPGRADE URGENCY: LOW
0dd62413 60
61* [BUGFIX] The compilation fix for RHLE5 in 2.6.1 was broken. Fixed.
62* [IMPROVED] Linenoise updated, now supports Ctrl+w.
63
2b5fc529 64---[ Redis 2.6.1 ]
65
2861cd84 66UPGRADE URGENCY: LOW
67
2b5fc529 68* [BUGFIX] Compilation on Linux < 2.6.17 or glibc < 2.6 fixed (RHLE5 & co).
69
5eec376c 70---[ Redis 2.6.0 ]
71
2861cd84 72UPGRADE URGENCY: HIGH
73
5eec376c 74* [BUGFIX] Allow AUTH when server is in -BUSY state because of a slow script.
75* [BUGFIX] MULTI/EXEC flow now makes sense when observed in MONITOR
76* [BUGFIX] SCRIPT KILL now uses different error prefixes for different errors.
77* [BUGFIX] Default memory limit for 32bit archs lowered from 3.5 to 3 GB.
78* [BUGFIX] redis-check-dump is now compatible with RDB files generated by 2.6.
79* [IMPROVED] New field in INFO: slave_read_only.
80
500dddc2 81---[ Redis 2.5.14 (2.6 Release Candidate 8) ]
82
83* [BUGFIX] Fixed compilation on FreeBSD.
84* [IMPROVED] SRANDMEMBER <count> that returns multiple random elements.
85* [IMPROVED] Sentinel backported to 2.6. It will be taken in sync with 2.8.
86* [IMPROVED] Helper function for scripting to return errors and status replies.
87* [IMPROVED] SORT by nosort [ASC|DESC] uses sorted set elements ordering.
88* [BUGFIX] Better resistence to system clock skew.
89* [IMPROVED] Warn the user when the configured maxmemory seems odd.
90* [BUGFIX] Hashing function is now murmurhash2 for security purposes.
91* [IMPROVED] Install script no longer uses a template but redis.conf itself.
92
44038626 93---[ Redis 2.5.13 (2.6 Release Candidate 7) ]
94
95UPGRADE URGENCY: HIGH
96
97* [BUGFIX] Theoretical bug in ziplist fixed.
98* [BUGFIX] Better out of memory handling (Log produced in log file).
99* [BUGFIX] Incrementally flush RDB file on slave side while performing the
100 first synchronization with the master. This makes Redis less
101 blocking in environments where disk I/O is slow.
102* [BUGFIX] Don't crash with Lua's redis.call() without arguments.
103* [BUGFIX] Don't crash after a big number of Lua calls on 32 bit systems
104 because of a failed assertion.
105* [BUGFIX] Fix SORT behaviour when called from scripting.
106* [BUGFIX] Adjust slave PING period accordingly to REDIS_HZ define.
107* [BUGFIX] BITCOUNT: fix crash on overflowing arguments.
108* [BUGFIX] Return an error when SELECT argument is not an integer.
109* [BUGFIX] Blocking operations on lists were completely reimplemented for
110 correctness. Now blocking list ops and pushes originated from
111 Lua scripts will play well together and will be replicated
112 and transmitted to the AOF correctly.
113* [IMPROVED] Send async PING before starting replication to avoid blocking if
114 master allows us to connect but it is actually not able to reply.
115* [IMPROVED] Support slave-priority for Redis Sentinel.
116* [IMPROVED] Hiredis library updated.
117
73d3e875 118---[ Redis 2.5.12 (2.6 Release Candidate 6) ]
119
120UPGRADE URGENCY: MODERATE.
121
122* [BUGFIX] Fixed a timing attack on AUTH (Issue #560).
123* [BUGFIX] Don't assume that "char" is signed.
124* [BUGFIX] Check that we have connection before enabling pipe mode.
125* [BUGFIX] Use the optimized version of the function to convert a double to
126 its string representation. Compilation was disabled because of
127 a typo in the #if statement.
128* [IMPROVED} REPLCONF internal command introduced, now INFO shows slaves with
129 correct port numbers. This makes 2.5.12 Redis Sentinel compatible.
130* [IMPROVED] Truncate short write from the AOF for a cleaner restart. On short
131 writes (for instance out of space) Redis will now try to remove
132 the half-written data so that the next restart will work without
133 the need for the "redis-check-aof" utility.
134* [IMPROVED] New in INFO: aof_last_bgrewrite_status
135* [IMPROVED] Allow Pub/Sub in contexts where other commands are blocked.
136* [BUGFIX] mark fd as writable when EPOLLERR or EPOLLHUP is returned by
137 epoll_wait.
138
0c9cf452 139---[ Redis 2.5.11 (2.6 Release Candidate 5) ]
140
141UPGRADE URGENCY: HIGH.
142
143* [BUGFIX] Fixed Hash corruption when loading an RDB file generated by
144 previous versions of Redis that encoded hashes using
145 a different ziplist encoding format for small integers.
146 All the fileds that are integers in the range 0-255 may not
147 be recognized, or duplicated un updates, causing a crash
148 when the ziplist is converted to a real hash. (Issue #547).
149* [BUGFIX] Fixed the count of memory used by output buffers in the
150 setDeferredMultiBulkLength() function.
151
1a3e9d95 152---[ Redis 2.5.10 (2.6 Release Candidate 4) ]
153
154UPGRADE URGENCY: HIGH.
155
156* [BUGFIX] Allow PREFIX to be overwritten on "make install".
157* [BUGFIX] Run the test with just one client if the computer is slow.
158* [BUGFIX] Event port support in our event driven libray.
159* [BUGFIX] Jemalloc updated to 3.0.0. This fixes a possibly AOF rewrite issue.
160 See https://github.com/antirez/redis/issues/504 for info.
161* [BUGFIX] Fixed issue #516: ZINTERSTORE / ZUNIONSTORE with mixed sets/zsets.
162* [BUGFIX] Set fd to writable when poll(2) detects POLLERR or POLLHUP event.
163* [BUGFIX] Fixed RESTORE hash failure (Issue #532).
164* [IMPROVED] Allow an AOF rewrite buffer > 2GB (Related to issue #504).
165* [IMPROVED] Server cron function frequency is now configurable (REDIS_HZ).
166* [IMPROVED] Better, less blocking expired keys collection algorithm.
167* [FEATURE] New commands: BITOP and BITCOUNT.
168* [FEATURE] redis-cli --pipe for mass import.
169
184b8e78 170What's new in Redis 2.5.9 (aka 2.6 Release Candidate 3)
171=======================================================
172
173UPGRADE URGENCY: critical, upgrade ASAP.
174
175* [BUGFIX] Fix for issue #500 (https://github.com/antirez/redis/pull/500).
176 Redis 2.6-RC1 and RC2 may corrupt ziplist-encoded sorted sets
177 produced by Redis 2.4.x.
af2455be 178* [BUGFIX] Fixed several bugs in init.d script.
179* [BUGFIX] syncio.c functions modified for speed and correctness. On osx
180 (and possibly other BSD-based systems) the slave would block on
181 replication to send the SYNC command when the master was not
182 available. This is fixed now, but was not affecting Linux installs.
8afa5b70 183* Now when slave-serve-stale-data is set to yes and the master is down, instead
af2455be 184 of reporting a generic error Redis replies with -MASTERDOWN.
184b8e78 185
0f077815 186What's new in Redis 2.5.8 (aka 2.6 Release Candidate 2)
187=======================================================
188
189UPGRADE URGENCY: high for all the users of the KEYS command, otherwise low.
190
191* [BUGFIX] Fix for KEYS command: if the DB contains keys with expires the KEYS
192 command may return the wrong output, having duplicated or missing
193 keys. See issue #487 and #488 on github for details.
194
7c5d96d9 195What's new in Redis 2.5.7 (aka 2.6 Release Candidate 1)
196=======================================================
197
198UPGRADE URGENCY: upgrade not recommended because this is an RC release.
199
200* This is the first release candidate for Redis 2.6. We are not aware of
201 bugs, but part of this code is young and was never tested in production
202 environments, so handle with care.
c2513ecb 203
7c5d96d9 204An overview of new features and changes in Redis 2.6.x
205======================================================
c2513ecb 206
207* Server side Lua scripting, see http://redis.io/commands/eval
208* Virtual Memory removed (was deprecated in 2.4)
209* Hardcoded limits about max number of clients removed.
210* AOF low level semantics is generally more sane, and especially when used
211 in slaves.
212* Milliseconds resolution expires, also added new commands with milliseconds
213 precision (PEXPIRE, PTTL, ...).
748f206e 214* Better memory usage for "small" lists, ziplists and hashes when fields or
215 values contain small integers.
b330de57 216* Read only slaves.
9a8d51ad 217* New bit opeations: BITCOUNT and BITOP commands.
518e7202 218* Clients max output buffer soft and hard limits. You can specifiy different
c2513ecb 219 limits for different classes of clients (normal,pubsub,slave).
9a8d51ad 220* More incremental (less blocking) expired keys collection algorithm, in
221 practical terms this means that Redis is more responsive when a very
222 big number of keys expire about at the same time.
c2513ecb 223* AOF is now able to rewrite aggregate data types using variadic commands,
224 often producing an AOF that is faster to save, load, and is smaller in size.
225* Every redis.conf directive is now accepted as a command line option for the
226 redis-server binary, with the same name and number of arguments.
227* Hash table seed randomization for protection against collisions attacks.
228* Performances improved when writing large objects to Redis.
748f206e 229* Integrated memory test, see redis-server --test-memory.
230* INCRBYFLOAT and HINCRBYFLOAT commands.
231* New DUMP, RESTORE, MIGRATE commands (back ported from Redis Cluster to 2.6).
232* CRC64 checksump in RDB files.
233* Better MONITOR output and behavior (now commands are logged before execution).
234* "Software Watchdog" feature to debug latency issues.
c2513ecb 235* Significant parts of the core refactored or rewritten. New internal APIs
236 and core changes allowed to develop Redis Cluster on top of the new code,
237 however for 2.6 all the cluster code was removed, and will be released with
238 Redis 3.0 when it is more complete and stable.
239* Redis ASCII art logo added at startup.
240* Crash report on memory violation or failed asserts improved significantly
241 to make debugging of hard to catch bugs simpler.
242* redis-benchmark improvements: ability to run selected tests,
243 CSV output, faster, better help.
244* redis-cli improvements: --eval for comfortable development of Lua scripts.
245* SHUTDOWN now supports two optional arguments: "SAVE" and "NOSAVE".
246* INFO output split into sections, the command is now able to just show
247 pecific sections.
248* New statistics about how many time a command was called, and how much
249 execution time it used (INFO commandstats).
250* More predictable SORT behavior in edge cases.
748f206e 251* Better support for big endian and *BSD systems.
252* Build system improved.
c2513ecb 253
69396249 254Migrating from 2.4 to 2.6
255=========================
256
257Redis 2.4 is mostly a strict subset of 2.6. However there are a few things
258that you should be aware of:
259
260* You can't use .rdb and AOF files generated with 2.6 into a 2.4 instance.
013189e7 261* 2.6 slaves can be attached to 2.4 masters, but not the contrary, and only
69396249 262 for the time needed to perform the version upgrade.
263
264There are also a few API differences, that are unlikely to cause problems,
265but it is better to keep them in mind:
266
267* SORT now will refuse to sort in numerical mode elements that can't be parsed
268 as numbers.
269* EXPIREs now all have millisecond resolution (but this is very unlikely to
270 break code that was not conceived exploting the previous resolution error
271 in some way.)
272* INFO output is a bit different now, and contains empty lines and comments
273 starting with '#'. All the major clients should be already fixed to work
274 with the new INFO format.
275* Slaves are only read-only by default (but you can change this easily
276 setting the "slave-read-only" configuration option to "no" editing your
277 redis.conf or using CONFIG SET.
278
279The following INFO fields were renamed for consistency:
280
281 changes_since_last_save -> rdb_changes_since_last_save
282 bgsave_in_progress -> rdb_bgsave_in_progress
283 last_save_time -> rdb_last_save_time
284 last_bgsave_status -> rdb_last_bgsave_status
285 bgrewriteaof_in_progress -> aof_rewrite_in_progress
286 bgrewriteaof_scheduled -> aof_rewrite_scheduled
287
288The following redis.conf and CONFIG GET / SET parameters changed:
289
290 * hash-max-zipmap-entries, now replaced by hash-max-ziplist-entries
291 * hash-max-zipmap-value, now replaced by hash-max-ziplist-value
292 * glueoutputbuf option was now completely removed (was deprecated)
293
c2513ecb 294--------------------------------------------------------------------------------
295
296Credits: Where not specified the implementation and design are done by
297Salvatore Sanfilippo and Pieter Noordhuis. Thanks to VMware for making all
298this possible. Also many thanks to all the other contributors and the amazing
299community we have.
300
301See commit messages for more credits.
302
303Cheers,
304Salvatore