]>
Commit | Line | Data |
---|---|---|
c2513ecb | 1 | Redis 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 | -------------------------------------------------------------------------------- |
9 | Upgrade urgency levels: | |
10 | ||
11 | LOW: No need to upgrade unless there are new features you want to use. | |
12 | MODERATE: Program an upgrade of the server, but it's not urgent. | |
44038626 | 13 | HIGH: There is a critical bug that may affect a subset of users. Upgrade! |
1a3e9d95 | 14 | CRITICAL: There is a critical bug affecting MOST USERS. Upgrade ASAP. |
15 | -------------------------------------------------------------------------------- | |
16 | ||
d9301f05 | 17 | --[ Redis 2.6.7 ] |
18 | ||
19 | UPGRADE 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 | ||
26 | UPGRADE 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 | ||
33 | UPGRADE URGENCY: MODERATE | |
34 | ||
35 | Warning: 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 | 53 | UPGRADE 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 | ||
59 | UPGRADE 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 | 66 | UPGRADE 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 | 72 | UPGRADE 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 | ||
95 | UPGRADE 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 | ||
120 | UPGRADE 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 | ||
141 | UPGRADE 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 | ||
154 | UPGRADE 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 | 170 | What's new in Redis 2.5.9 (aka 2.6 Release Candidate 3) |
171 | ======================================================= | |
172 | ||
173 | UPGRADE 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 | 186 | What's new in Redis 2.5.8 (aka 2.6 Release Candidate 2) |
187 | ======================================================= | |
188 | ||
189 | UPGRADE 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 | 195 | What's new in Redis 2.5.7 (aka 2.6 Release Candidate 1) |
196 | ======================================================= | |
197 | ||
198 | UPGRADE 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 | 204 | An 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 | 254 | Migrating from 2.4 to 2.6 |
255 | ========================= | |
256 | ||
257 | Redis 2.4 is mostly a strict subset of 2.6. However there are a few things | |
258 | that 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 | ||
264 | There are also a few API differences, that are unlikely to cause problems, | |
265 | but 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 | ||
279 | The 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 | ||
288 | The 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 | ||
296 | Credits: Where not specified the implementation and design are done by | |
297 | Salvatore Sanfilippo and Pieter Noordhuis. Thanks to VMware for making all | |
298 | this possible. Also many thanks to all the other contributors and the amazing | |
299 | community we have. | |
300 | ||
301 | See commit messages for more credits. | |
302 | ||
303 | Cheers, | |
304 | Salvatore |