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 | |
44038626 |
17 | ---[ Redis 2.5.13 (2.6 Release Candidate 7) ] |
18 | |
19 | UPGRADE URGENCY: HIGH |
20 | |
21 | * [BUGFIX] Theoretical bug in ziplist fixed. |
22 | * [BUGFIX] Better out of memory handling (Log produced in log file). |
23 | * [BUGFIX] Incrementally flush RDB file on slave side while performing the |
24 | first synchronization with the master. This makes Redis less |
25 | blocking in environments where disk I/O is slow. |
26 | * [BUGFIX] Don't crash with Lua's redis.call() without arguments. |
27 | * [BUGFIX] Don't crash after a big number of Lua calls on 32 bit systems |
28 | because of a failed assertion. |
29 | * [BUGFIX] Fix SORT behaviour when called from scripting. |
30 | * [BUGFIX] Adjust slave PING period accordingly to REDIS_HZ define. |
31 | * [BUGFIX] BITCOUNT: fix crash on overflowing arguments. |
32 | * [BUGFIX] Return an error when SELECT argument is not an integer. |
33 | * [BUGFIX] Blocking operations on lists were completely reimplemented for |
34 | correctness. Now blocking list ops and pushes originated from |
35 | Lua scripts will play well together and will be replicated |
36 | and transmitted to the AOF correctly. |
37 | * [IMPROVED] Send async PING before starting replication to avoid blocking if |
38 | master allows us to connect but it is actually not able to reply. |
39 | * [IMPROVED] Support slave-priority for Redis Sentinel. |
40 | * [IMPROVED] Hiredis library updated. |
41 | |
73d3e875 |
42 | ---[ Redis 2.5.12 (2.6 Release Candidate 6) ] |
43 | |
44 | UPGRADE URGENCY: MODERATE. |
45 | |
46 | * [BUGFIX] Fixed a timing attack on AUTH (Issue #560). |
47 | * [BUGFIX] Don't assume that "char" is signed. |
48 | * [BUGFIX] Check that we have connection before enabling pipe mode. |
49 | * [BUGFIX] Use the optimized version of the function to convert a double to |
50 | its string representation. Compilation was disabled because of |
51 | a typo in the #if statement. |
52 | * [IMPROVED} REPLCONF internal command introduced, now INFO shows slaves with |
53 | correct port numbers. This makes 2.5.12 Redis Sentinel compatible. |
54 | * [IMPROVED] Truncate short write from the AOF for a cleaner restart. On short |
55 | writes (for instance out of space) Redis will now try to remove |
56 | the half-written data so that the next restart will work without |
57 | the need for the "redis-check-aof" utility. |
58 | * [IMPROVED] New in INFO: aof_last_bgrewrite_status |
59 | * [IMPROVED] Allow Pub/Sub in contexts where other commands are blocked. |
60 | * [BUGFIX] mark fd as writable when EPOLLERR or EPOLLHUP is returned by |
61 | epoll_wait. |
62 | |
0c9cf452 |
63 | ---[ Redis 2.5.11 (2.6 Release Candidate 5) ] |
64 | |
65 | UPGRADE URGENCY: HIGH. |
66 | |
67 | * [BUGFIX] Fixed Hash corruption when loading an RDB file generated by |
68 | previous versions of Redis that encoded hashes using |
69 | a different ziplist encoding format for small integers. |
70 | All the fileds that are integers in the range 0-255 may not |
71 | be recognized, or duplicated un updates, causing a crash |
72 | when the ziplist is converted to a real hash. (Issue #547). |
73 | * [BUGFIX] Fixed the count of memory used by output buffers in the |
74 | setDeferredMultiBulkLength() function. |
75 | |
1a3e9d95 |
76 | ---[ Redis 2.5.10 (2.6 Release Candidate 4) ] |
77 | |
78 | UPGRADE URGENCY: HIGH. |
79 | |
80 | * [BUGFIX] Allow PREFIX to be overwritten on "make install". |
81 | * [BUGFIX] Run the test with just one client if the computer is slow. |
82 | * [BUGFIX] Event port support in our event driven libray. |
83 | * [BUGFIX] Jemalloc updated to 3.0.0. This fixes a possibly AOF rewrite issue. |
84 | See https://github.com/antirez/redis/issues/504 for info. |
85 | * [BUGFIX] Fixed issue #516: ZINTERSTORE / ZUNIONSTORE with mixed sets/zsets. |
86 | * [BUGFIX] Set fd to writable when poll(2) detects POLLERR or POLLHUP event. |
87 | * [BUGFIX] Fixed RESTORE hash failure (Issue #532). |
88 | * [IMPROVED] Allow an AOF rewrite buffer > 2GB (Related to issue #504). |
89 | * [IMPROVED] Server cron function frequency is now configurable (REDIS_HZ). |
90 | * [IMPROVED] Better, less blocking expired keys collection algorithm. |
91 | * [FEATURE] New commands: BITOP and BITCOUNT. |
92 | * [FEATURE] redis-cli --pipe for mass import. |
93 | |
184b8e78 |
94 | What's new in Redis 2.5.9 (aka 2.6 Release Candidate 3) |
95 | ======================================================= |
96 | |
97 | UPGRADE URGENCY: critical, upgrade ASAP. |
98 | |
99 | * [BUGFIX] Fix for issue #500 (https://github.com/antirez/redis/pull/500). |
100 | Redis 2.6-RC1 and RC2 may corrupt ziplist-encoded sorted sets |
101 | produced by Redis 2.4.x. |
af2455be |
102 | * [BUGFIX] Fixed several bugs in init.d script. |
103 | * [BUGFIX] syncio.c functions modified for speed and correctness. On osx |
104 | (and possibly other BSD-based systems) the slave would block on |
105 | replication to send the SYNC command when the master was not |
106 | available. This is fixed now, but was not affecting Linux installs. |
8afa5b70 |
107 | * Now when slave-serve-stale-data is set to yes and the master is down, instead |
af2455be |
108 | of reporting a generic error Redis replies with -MASTERDOWN. |
184b8e78 |
109 | |
0f077815 |
110 | What's new in Redis 2.5.8 (aka 2.6 Release Candidate 2) |
111 | ======================================================= |
112 | |
113 | UPGRADE URGENCY: high for all the users of the KEYS command, otherwise low. |
114 | |
115 | * [BUGFIX] Fix for KEYS command: if the DB contains keys with expires the KEYS |
116 | command may return the wrong output, having duplicated or missing |
117 | keys. See issue #487 and #488 on github for details. |
118 | |
7c5d96d9 |
119 | What's new in Redis 2.5.7 (aka 2.6 Release Candidate 1) |
120 | ======================================================= |
121 | |
122 | UPGRADE URGENCY: upgrade not recommended because this is an RC release. |
123 | |
124 | * This is the first release candidate for Redis 2.6. We are not aware of |
125 | bugs, but part of this code is young and was never tested in production |
126 | environments, so handle with care. |
c2513ecb |
127 | |
7c5d96d9 |
128 | An overview of new features and changes in Redis 2.6.x |
129 | ====================================================== |
c2513ecb |
130 | |
131 | * Server side Lua scripting, see http://redis.io/commands/eval |
132 | * Virtual Memory removed (was deprecated in 2.4) |
133 | * Hardcoded limits about max number of clients removed. |
134 | * AOF low level semantics is generally more sane, and especially when used |
135 | in slaves. |
136 | * Milliseconds resolution expires, also added new commands with milliseconds |
137 | precision (PEXPIRE, PTTL, ...). |
748f206e |
138 | * Better memory usage for "small" lists, ziplists and hashes when fields or |
139 | values contain small integers. |
b330de57 |
140 | * Read only slaves. |
9a8d51ad |
141 | * New bit opeations: BITCOUNT and BITOP commands. |
518e7202 |
142 | * Clients max output buffer soft and hard limits. You can specifiy different |
c2513ecb |
143 | limits for different classes of clients (normal,pubsub,slave). |
9a8d51ad |
144 | * More incremental (less blocking) expired keys collection algorithm, in |
145 | practical terms this means that Redis is more responsive when a very |
146 | big number of keys expire about at the same time. |
c2513ecb |
147 | * AOF is now able to rewrite aggregate data types using variadic commands, |
148 | often producing an AOF that is faster to save, load, and is smaller in size. |
149 | * Every redis.conf directive is now accepted as a command line option for the |
150 | redis-server binary, with the same name and number of arguments. |
151 | * Hash table seed randomization for protection against collisions attacks. |
152 | * Performances improved when writing large objects to Redis. |
748f206e |
153 | * Integrated memory test, see redis-server --test-memory. |
154 | * INCRBYFLOAT and HINCRBYFLOAT commands. |
155 | * New DUMP, RESTORE, MIGRATE commands (back ported from Redis Cluster to 2.6). |
156 | * CRC64 checksump in RDB files. |
157 | * Better MONITOR output and behavior (now commands are logged before execution). |
158 | * "Software Watchdog" feature to debug latency issues. |
c2513ecb |
159 | * Significant parts of the core refactored or rewritten. New internal APIs |
160 | and core changes allowed to develop Redis Cluster on top of the new code, |
161 | however for 2.6 all the cluster code was removed, and will be released with |
162 | Redis 3.0 when it is more complete and stable. |
163 | * Redis ASCII art logo added at startup. |
164 | * Crash report on memory violation or failed asserts improved significantly |
165 | to make debugging of hard to catch bugs simpler. |
166 | * redis-benchmark improvements: ability to run selected tests, |
167 | CSV output, faster, better help. |
168 | * redis-cli improvements: --eval for comfortable development of Lua scripts. |
169 | * SHUTDOWN now supports two optional arguments: "SAVE" and "NOSAVE". |
170 | * INFO output split into sections, the command is now able to just show |
171 | pecific sections. |
172 | * New statistics about how many time a command was called, and how much |
173 | execution time it used (INFO commandstats). |
174 | * More predictable SORT behavior in edge cases. |
748f206e |
175 | * Better support for big endian and *BSD systems. |
176 | * Build system improved. |
c2513ecb |
177 | |
69396249 |
178 | Migrating from 2.4 to 2.6 |
179 | ========================= |
180 | |
181 | Redis 2.4 is mostly a strict subset of 2.6. However there are a few things |
182 | that you should be aware of: |
183 | |
184 | * You can't use .rdb and AOF files generated with 2.6 into a 2.4 instance. |
013189e7 |
185 | * 2.6 slaves can be attached to 2.4 masters, but not the contrary, and only |
69396249 |
186 | for the time needed to perform the version upgrade. |
187 | |
188 | There are also a few API differences, that are unlikely to cause problems, |
189 | but it is better to keep them in mind: |
190 | |
191 | * SORT now will refuse to sort in numerical mode elements that can't be parsed |
192 | as numbers. |
193 | * EXPIREs now all have millisecond resolution (but this is very unlikely to |
194 | break code that was not conceived exploting the previous resolution error |
195 | in some way.) |
196 | * INFO output is a bit different now, and contains empty lines and comments |
197 | starting with '#'. All the major clients should be already fixed to work |
198 | with the new INFO format. |
199 | * Slaves are only read-only by default (but you can change this easily |
200 | setting the "slave-read-only" configuration option to "no" editing your |
201 | redis.conf or using CONFIG SET. |
202 | |
203 | The following INFO fields were renamed for consistency: |
204 | |
205 | changes_since_last_save -> rdb_changes_since_last_save |
206 | bgsave_in_progress -> rdb_bgsave_in_progress |
207 | last_save_time -> rdb_last_save_time |
208 | last_bgsave_status -> rdb_last_bgsave_status |
209 | bgrewriteaof_in_progress -> aof_rewrite_in_progress |
210 | bgrewriteaof_scheduled -> aof_rewrite_scheduled |
211 | |
212 | The following redis.conf and CONFIG GET / SET parameters changed: |
213 | |
214 | * hash-max-zipmap-entries, now replaced by hash-max-ziplist-entries |
215 | * hash-max-zipmap-value, now replaced by hash-max-ziplist-value |
216 | * glueoutputbuf option was now completely removed (was deprecated) |
217 | |
c2513ecb |
218 | -------------------------------------------------------------------------------- |
219 | |
220 | Credits: Where not specified the implementation and design are done by |
221 | Salvatore Sanfilippo and Pieter Noordhuis. Thanks to VMware for making all |
222 | this possible. Also many thanks to all the other contributors and the amazing |
223 | community we have. |
224 | |
225 | See commit messages for more credits. |
226 | |
227 | Cheers, |
228 | Salvatore |