xref: /redis-3.2.3/00-RELEASENOTES (revision f991cdc3)
1Redis 3.2 release notes
2=======================
3
4--------------------------------------------------------------------------------
5Upgrade urgency levels:
6
7LOW:      No need to upgrade unless there are new features you want to use.
8MODERATE: Program an upgrade of the server, but it's not urgent.
9HIGH:     There is a critical bug that may affect a subset of users. Upgrade!
10CRITICAL: There is a critical bug affecting MOST USERS. Upgrade ASAP.
11--------------------------------------------------------------------------------
12
13================================================================================
14Redis 3.2.0     Released Fri May 06 08:47:10 CEST 2016
15================================================================================
16
17Upgrade urgency HIGH: 3.2-RC users should upgrade ASAP to this more
18                      stable release of Redis.
19
20Hello, this is Redis 3.2.0 stable! And with the new release there is a new
21format for the changelog. Now it is composed of a "letter" like the one
22you are reading, followed by all the commits composing the release for people
23interested in the details.
24
25There are a few changes between the latest release candidate of Redis 3.2
26and the final 3.2.0 release. The main ones are the obvious bug fixes you
27can find detailed below, also a few new things:
28
29Critical bugs fixed:
30
31* There was a problem in the way a cluster instance loaded the AOF that
32  could cause data written via scripts to be lost during reshardings.
33
34New things:
35
36* There is a new very powerful BITFIELD command. Check the documentation
37  here: http://redis.io/commands/BITFIELD
38
39* CONFIG GET is allowed during the loading of the dataset.
40
41* The DEBUG command have new features and can show an help with DEBUG HELP.
42
43* redis-cli show hits about the commands arguments to the right.
44
45* GEORADIUS got a STORE / STOREDIST option to store the result into a target
46  key (as as orted set) instead of reporting it to the user.
47
48* Redis Cluster replicas migration now works in a slightly different way. In
49  the past a slave could migrate only to a master that used to have slaves
50  in the past (and if there was still trace of this information). Now instead
51  if a new slave gets at least a slot, and at least one other master in the
52  cluster has a slave, then the new master is considered a valid target for
53  replica migration. So if it will be orphaned and there is a spare slave
54  it will get one.
55
56* CLUSTER SLOTS output now includes the node ID (in a backward compatible
57  manner).
58
59* A lot of bug fixes you can read in the commits details below, with the
60  authors that kindly provided many useful patches. Thanks.
61
62As usually what "stable" means is that we are confident the release is mature,
63however do your tests before putting it into production in your environemnt
64as it's fresh meat anyway.
65
66Cheers,
67Salvatore
68
69+-------------------------------------------------------------------------------
70| Cluster: don't check scripts key slots during AOF loading.
71| By antirez, 2016-05-05 23:37:08 +0200
72+--------------------------------------------------------------------------------
73https://github.com/antirez/redis/commit/746e1bebb4baf876c1e8cd2fe2d468a1c41e5dc3
74
75
76 src/scripting.c | 6 ++++--
77 1 file changed, 4 insertions(+), 2 deletions(-)
78
79+-------------------------------------------------------------------------------
80| redis-cli: remove debugging message.
81| By antirez, 2016-05-05 18:05:37 +0200
82+--------------------------------------------------------------------------------
83https://github.com/antirez/redis/commit/3907b059280898c6340b53982b3b65957535da7c
84
85
86 src/redis-cli.c | 1 -
87 1 file changed, 1 deletion(-)
88
89+-------------------------------------------------------------------------------
90| Revert "Fix commandCommand arity"
91| By antirez, 2016-05-05 17:35:33 +0200
92+--------------------------------------------------------------------------------
93https://github.com/antirez/redis/commit/f01a2714582a9a916b41e6cb90e42474a104925d
94
95This reverts commit 1189a4eae6d009fc0da8d50fd542ba1391542165.
96
97Actually this is wrong, the command can be called without args at all.
98
99 src/server.c | 2 +-
100 1 file changed, 1 insertion(+), 1 deletion(-)
101
102+-------------------------------------------------------------------------------
103| Fix commandCommand arity
104| By Ruben Bridgewater, 2016-01-04 11:39:45 +0100
105+--------------------------------------------------------------------------------
106https://github.com/antirez/redis/commit/1189a4eae6d009fc0da8d50fd542ba1391542165
107
108
109 src/server.c | 2 +-
110 1 file changed, 1 insertion(+), 1 deletion(-)
111
112+-------------------------------------------------------------------------------
113| Fix a possible race condition of sdown detection if the connection to master/slave/sentinel decames disconnected just after the last PONG and before the next PING.
114| By Daniel Shih, 2016-01-12 17:06:47 +0800
115+--------------------------------------------------------------------------------
116https://github.com/antirez/redis/commit/d9dc0d777b775f2fe4f23f42e1b4130f4de1ed72
117
118
119 src/sentinel.c | 2 ++
120 1 file changed, 2 insertions(+)
121
122+-------------------------------------------------------------------------------
123| Fix nanosecond conversion
124| By Jan-Erik Rediger, 2016-01-13 10:22:29 -0700
125+--------------------------------------------------------------------------------
126https://github.com/antirez/redis/commit/13bd702844eda7bccc7c672b6ff77f53e21ab841
127
1281 microsecond = 1000 nanoseconds
1291e3 = 1000
13010e3 = 10000
131
132 src/redis-cli.c | 2 +-
133 1 file changed, 1 insertion(+), 1 deletion(-)
134
135+-------------------------------------------------------------------------------
136| redis-cli: don't free historyfile, is used later.
137| By antirez, 2016-05-05 13:57:57 +0200
138+--------------------------------------------------------------------------------
139https://github.com/antirez/redis/commit/f6b7df3aec1d8fddf3121c4315fea4bf45cc4cfe
140
141
142 src/redis-cli.c | 2 +-
143 1 file changed, 1 insertion(+), 1 deletion(-)
144
145+-------------------------------------------------------------------------------
146| Cluster test 12: reshard back just a few slots to speedup the test.
147| By antirez, 2016-05-05 11:49:27 +0200
148+--------------------------------------------------------------------------------
149https://github.com/antirez/redis/commit/97ce72fa2d348f914fc40ccf0a32008c7362b817
150
151
152 tests/cluster/tests/12-replica-migration-2.tcl | 14 +++++++-------
153 1 file changed, 7 insertions(+), 7 deletions(-)
154
155+-------------------------------------------------------------------------------
156| Cluster: make getNodeByQuery() responsible of -CLUSTERDOWN errors.
157| By antirez, 2016-05-05 11:33:43 +0200
158+--------------------------------------------------------------------------------
159https://github.com/antirez/redis/commit/708f486c77b455fa7ae1e87cf31278474eb9d432
160
161This fixes a bug introduced by d827dbf, and makes the code consistent
162with the logic of always allowing, while the cluster is down, commands
163that don't target any key.
164
165As a side effect the code is also simpler now.
166
167 src/cluster.c | 13 +++++++++++--
168 src/server.c  | 26 ++++++++++----------------
169 2 files changed, 21 insertions(+), 18 deletions(-)
170
171+-------------------------------------------------------------------------------
172| Fixes a typo
173| By Itamar Haber, 2016-01-28 21:47:18 +0200
174+--------------------------------------------------------------------------------
175https://github.com/antirez/redis/commit/1fc2ed61bec2f2bf266b48e566a197c5214b4350
176
177
178 src/cluster.c | 2 +-
179 1 file changed, 1 insertion(+), 1 deletion(-)
180
181+-------------------------------------------------------------------------------
182| Reverse redirect address parse
183| By David Cavar, 2016-02-09 15:04:42 +0100
184+--------------------------------------------------------------------------------
185https://github.com/antirez/redis/commit/787d5ab9be45bf4feb6cfa8a227c185c93aaadae
186
187Fix issue in case the redirect address is in ipv6 format. Parse from behind to extract last part of the response which represents actual port.
188 src/redis-cli.c | 2 +-
189 1 file changed, 1 insertion(+), 1 deletion(-)
190
191+-------------------------------------------------------------------------------
192| Bind both IPv4 and IPv6 or exit with an error by default.
193| By antirez, 2016-05-05 10:02:42 +0200
194+--------------------------------------------------------------------------------
195https://github.com/antirez/redis/commit/0fda06225f19b18a370d63ac650a8bb61020235d
196
197Thanks to @tushar2708 for the PR. I applied a slightly different fix.
198Thanks to @cespare for reporting.
199
200Close #3024
201Close #3020
202
203 src/server.c | 18 ++++++++++--------
204 1 file changed, 10 insertions(+), 8 deletions(-)
205
206+-------------------------------------------------------------------------------
207| Quick fix to avoid false positive in replica migration test.
208| By antirez, 2016-05-05 09:45:31 +0200
209+--------------------------------------------------------------------------------
210https://github.com/antirez/redis/commit/65707fa6b5bb38b5818af57ab93b9b1da47d708a
211
212
213 tests/cluster/tests/12-replica-migration-2.tcl | 5 ++++-
214 1 file changed, 4 insertions(+), 1 deletion(-)
215
216+-------------------------------------------------------------------------------
217| Ensure slots are rechecked on EXEC.
218| By Chris Thunes, 2016-03-11 15:22:36 -0500
219+--------------------------------------------------------------------------------
220https://github.com/antirez/redis/commit/1f3ed652e2a6cfcbbd5300a31f5771f2ce842e98
221
222Fixes #2515.
223
224 src/server.c | 9 +++++++--
225 1 file changed, 7 insertions(+), 2 deletions(-)
226
227+-------------------------------------------------------------------------------
228| fix for #3187
229| By therealbill, 2016-04-22 10:43:48 -0500
230+--------------------------------------------------------------------------------
231https://github.com/antirez/redis/commit/3a4810678904af013901a896ab0bb3c71856644c
232
233I've renamed maxmemoryToString to evictPolicyToString since that is
234more accurate (and easier to mentally connect with the correct data), as
235well as updated the function to user server.maxmemory_policy rather than
236server.maxmemory. Now with a default config it is actually returning
237the correct policy rather than volatile-lru.
238
239 src/config.c | 4 ++--
240 src/server.c | 2 +-
241 src/server.h | 2 +-
242 3 files changed, 4 insertions(+), 4 deletions(-)
243
244+-------------------------------------------------------------------------------
245| Fixed typo in README.md
246| By Seth Bergman, 2016-04-30 11:58:48 -0500
247+--------------------------------------------------------------------------------
248https://github.com/antirez/redis/commit/bba53d7fc7a759b53d72a7c3be17a00abe32039e
249
250
251 README.md | 2 +-
252 1 file changed, 1 insertion(+), 1 deletion(-)
253
254+-------------------------------------------------------------------------------
255| fix variable
256| By Ryosuke Hasebe, 2016-03-30 23:09:36 +0900
257+--------------------------------------------------------------------------------
258https://github.com/antirez/redis/commit/ab7581489871eebcf0253915acc26efb27f5df23
259
260
261 src/redis-trib.rb | 10 +++++-----
262 1 file changed, 5 insertions(+), 5 deletions(-)
263
264+-------------------------------------------------------------------------------
265| fix check_open_slots
266| By Ryosuke Hasebe, 2016-03-30 21:56:22 +0900
267+--------------------------------------------------------------------------------
268https://github.com/antirez/redis/commit/0fcf896ac14c6e5c57e3b79e836dd8bf7dad94b5
269
270
271 src/redis-trib.rb | 3 ++-
272 1 file changed, 2 insertions(+), 1 deletion(-)
273
274+-------------------------------------------------------------------------------
275| Minor redis-cli wording change in --help output.
276| By antirez, 2016-05-04 22:34:17 +0200
277+--------------------------------------------------------------------------------
278https://github.com/antirez/redis/commit/b8a63635e39ce312b2c5664f2c2a59184849b8fb
279
280
281 src/redis-cli.c | 3 ++-
282 1 file changed, 2 insertions(+), 1 deletion(-)
283
284+-------------------------------------------------------------------------------
285| Allow CONFIG GET during loading.
286| By antirez, 2016-05-04 15:45:38 +0200
287+--------------------------------------------------------------------------------
288https://github.com/antirez/redis/commit/ae95de93312d6bb2c8c365c31f2a3fd0b6d2c100
289
290Thanks to @oranagra for the idea of allowing CONFIG GET during loading.
291
292 src/config.c | 6 ++++++
293 src/server.c | 2 +-
294 2 files changed, 7 insertions(+), 1 deletion(-)
295
296+-------------------------------------------------------------------------------
297| Command "r" flag removed from commands not accessing the key space.
298| By antirez, 2016-05-04 15:42:14 +0200
299+--------------------------------------------------------------------------------
300https://github.com/antirez/redis/commit/3ff8f57ef32e3b1ddd407b65d474f610881bef34
301
302Thanks to @oranagra for the hint about misplaced 'r' flags.
303
304 src/server.c | 70 ++++++++++++++++++++++++++++++------------------------------
305 1 file changed, 35 insertions(+), 35 deletions(-)
306
307+-------------------------------------------------------------------------------
308| DEBUG command self documentation.
309| By antirez, 2016-05-04 12:45:55 +0200
310+--------------------------------------------------------------------------------
311https://github.com/antirez/redis/commit/07b852d24ec8d7cb47044b096baf0af1410c69ed
312
313
314 src/debug.c  | 49 ++++++++++++++++++++++++++++++++++++++++++++++++-
315 src/server.c |  2 +-
316 2 files changed, 49 insertions(+), 2 deletions(-)
317
318+-------------------------------------------------------------------------------
319| various cleanups and minor fixes
320| By Oran Agra, 2016-04-25 16:49:57 +0300
321+--------------------------------------------------------------------------------
322https://github.com/antirez/redis/commit/cfc08b65b04cf972ebeadf3be9f39f2acd7672b3
323
324
325 src/adlist.c             | 18 ++++++------------
326 src/ae_epoll.c           |  6 ++----
327 src/aof.c                |  5 ++++-
328 src/db.c                 |  2 +-
329 src/rdb.c                |  6 ++++--
330 src/rio.c                |  5 +++--
331 src/rio.h                |  2 ++
332 src/server.h             |  3 +--
333 tests/support/test.tcl   |  6 ------
334 tests/unit/bitops.tcl    |  2 +-
335 tests/unit/other.tcl     |  1 +
336 tests/unit/scripting.tcl | 27 ++++++++++++++-------------
337 12 files changed, 39 insertions(+), 44 deletions(-)
338
339+-------------------------------------------------------------------------------
340| dict.c minor optimization
341| By Oran Agra, 2016-04-25 16:48:25 +0300
342+--------------------------------------------------------------------------------
343https://github.com/antirez/redis/commit/6710c8dc15680b756de26d1d45df110987b951b3
344
345
346 src/dict.c | 8 ++++----
347 1 file changed, 4 insertions(+), 4 deletions(-)
348
349+-------------------------------------------------------------------------------
350| networking.c minor optimization
351| By Oran Agra, 2016-04-25 16:48:09 +0300
352+--------------------------------------------------------------------------------
353https://github.com/antirez/redis/commit/be5c0869821b16f18104d9ea62ab42bfa0615816
354
355
356 src/networking.c | 11 +++++------
357 1 file changed, 5 insertions(+), 6 deletions(-)
358
359+-------------------------------------------------------------------------------
360| add DEBUG JEMALLC PURGE and JEMALLOC INFO cleanup
361| By Oran Agra, 2016-04-25 16:47:42 +0300
362+--------------------------------------------------------------------------------
363https://github.com/antirez/redis/commit/3ede6c7a506bcff3c7d2147c8af140dd4102a36e
364
365
366 src/debug.c     | 17 ++++++++++++++++-
367 src/redis-cli.c |  2 +-
368 2 files changed, 17 insertions(+), 2 deletions(-)
369
370+-------------------------------------------------------------------------------
371| fix small issues in redis 3.2
372| By Oran Agra, 2016-04-25 14:19:28 +0300
373+--------------------------------------------------------------------------------
374https://github.com/antirez/redis/commit/e2fab184efd01ffa0d510739f4d819a30b1d6787
375
376
377 src/config.c | 2 ++
378 src/rdb.c    | 2 +-
379 2 files changed, 3 insertions(+), 1 deletion(-)
380
381+-------------------------------------------------------------------------------
382| additional fix to issue #2948
383| By Oran Agra, 2016-04-25 14:18:40 +0300
384+--------------------------------------------------------------------------------
385https://github.com/antirez/redis/commit/9d57ceec08687545c2a63a2c18c28e2bcaf74664
386
387
388 src/networking.c | 3 +++
389 1 file changed, 3 insertions(+)
390
391+-------------------------------------------------------------------------------
392| Reply with error on negative geo radius.
393| By antirez, 2016-05-04 08:59:56 +0200
394+--------------------------------------------------------------------------------
395https://github.com/antirez/redis/commit/7ba2cf5f8bea9cd125e773de147e3ea9b19ee2b0
396
397Thanks to @tidwall for reporting.
398Close #3194.
399
400 src/geo.c | 5 ++++-
401 1 file changed, 4 insertions(+), 1 deletion(-)
402
403+-------------------------------------------------------------------------------
404| Cluster regression test for #3043.
405| By antirez, 2016-05-02 18:36:09 +0200
406+--------------------------------------------------------------------------------
407https://github.com/antirez/redis/commit/38cf2bd257d09b360be6adf450d59592a359696d
408
409The test works but is very slow so far, since it involves resharding
4101/5 of all the cluster slots from master 0 to the other 4 masters and
411back into the original master.
412
413 tests/cluster/tests/12-replica-migration-2.tcl | 61 ++++++++++++++++++++++++++
414 1 file changed, 61 insertions(+)
415
416+-------------------------------------------------------------------------------
417| New masters with slots are now targets of migration if others are.
418| By antirez, 2016-05-02 16:41:56 +0200
419+--------------------------------------------------------------------------------
420https://github.com/antirez/redis/commit/7b618823c189c24313effbccda7022d167ea419c
421
422This fixes issue #3043.
423
424Before this fix, after a complete resharding of a master slots
425to other nodes, the master remains empty and the slaves migrate away
426to other masters with non-zero nodes. However the old master now empty,
427is no longer considered a target for migration, because the system has
428no way to tell it had slaves in the past.
429
430This fix leaves the algorithm used in the past untouched, but adds a
431new rule. When a new or old master which is empty and without slaves,
432are assigend with their first slot, if other masters in the cluster have
433slaves, they are automatically considered to be targets for replicas
434migration.
435
436 src/cluster.c | 36 +++++++++++++++++++++++++++++++++++-
437 1 file changed, 35 insertions(+), 1 deletion(-)
438
439+-------------------------------------------------------------------------------
440| Test ZINCRBY return value.
441| By antirez, 2016-05-02 08:57:30 +0200
442+--------------------------------------------------------------------------------
443https://github.com/antirez/redis/commit/1101b515c73dcb0ff4a868ba38a91dcebb5b85cc
444
445
446 tests/unit/type/zset.tcl | 6 ++++++
447 1 file changed, 6 insertions(+)
448
449+-------------------------------------------------------------------------------
450| redis-cli preferences and rc file support.
451| By antirez, 2016-04-13 13:58:30 +0200
452+--------------------------------------------------------------------------------
453https://github.com/antirez/redis/commit/bbf93108ef2a7ac7bd53e26c96bf838f7c5e72df
454
455
456 src/redis-cli.c | 102 ++++++++++++++++++++++++++++++++++++++++++++++----------
457 1 file changed, 85 insertions(+), 17 deletions(-)
458
459+-------------------------------------------------------------------------------
460| redis-cli hints.
461| By antirez, 2016-04-13 12:34:14 +0200
462+--------------------------------------------------------------------------------
463https://github.com/antirez/redis/commit/3fd3fca0dd38cb21c900e4ba98e3d41f333335aa
464
465
466 deps/linenoise/linenoise.c |  8 +++++++
467 deps/linenoise/linenoise.h |  2 +-
468 src/redis-cli.c            | 53 ++++++++++++++++++++++++++++++++++++++++++++++
469 3 files changed, 62 insertions(+), 1 deletion(-)
470
471+-------------------------------------------------------------------------------
472| Linenoise updated again (hints support).
473| By antirez, 2016-04-12 23:39:18 +0200
474+--------------------------------------------------------------------------------
475https://github.com/antirez/redis/commit/34354473ffe8d60b80acdbc8c16b194f8bbd70a0
476
477
478 deps/linenoise/README.markdown | 176 ++++++++++++++++++++++++++++++++++++++++-
479 deps/linenoise/example.c       |  10 +++
480 deps/linenoise/linenoise.c     |  55 ++++++++++++-
481 deps/linenoise/linenoise.h     |  15 +++-
482 4 files changed, 248 insertions(+), 8 deletions(-)
483
484+-------------------------------------------------------------------------------
485| Linenoise updated.
486| By antirez, 2016-04-06 13:37:27 +0200
487+--------------------------------------------------------------------------------
488https://github.com/antirez/redis/commit/58229cd766fa02f399267310b5b488aac2c55a6a
489
490As a side effect, cat commands.txt | redis-cli now is able to handle
491lines more than 4096 bytes.
492
493 deps/linenoise/linenoise.c | 60 ++++++++++++++++++++++++++++++++++------------
494 1 file changed, 45 insertions(+), 15 deletions(-)
495
496+-------------------------------------------------------------------------------
497| ae.c: Fix delay until next timer event.
498| By antirez, 2016-04-04 14:08:16 +0200
499+--------------------------------------------------------------------------------
500https://github.com/antirez/redis/commit/29645f1f44926ac2662ed768fe1e369775a30b66
501
502This fix was written by Anthony LaTorre.
503The old code mis-calculated the amount of time to wait till next event.
504
505 src/ae.c | 21 ++++++++++++---------
506 1 file changed, 12 insertions(+), 9 deletions(-)
507
508+-------------------------------------------------------------------------------
509| ae.c: comment to explain why we have a useless maxId check.
510| By antirez, 2016-04-04 12:23:10 +0200
511+--------------------------------------------------------------------------------
512https://github.com/antirez/redis/commit/aa79c1f1c1d288e4cc2c0f4689ad01488678bf9d
513
514
515 src/ae.c | 6 +++++-
516 1 file changed, 5 insertions(+), 1 deletion(-)
517
518+-------------------------------------------------------------------------------
519| Fix ae.c to avoid timers infinite loop.
520| By antirez, 2016-01-08 15:05:14 +0100
521+--------------------------------------------------------------------------------
522https://github.com/antirez/redis/commit/0b69c9865619b54b75576e67aaafe7b018734bec
523
524This fix was suggested by Anthony LaTorre, that provided also a good
525test case that was used to verify the fix.
526
527The problem with the old implementation is that, the time returned by
528a timer event (that is the time after it want to run again) is added
529to the event *start time*. So if the event takes, in order to run, more
530than the time it says it want to be scheduled again for running, an
531infinite loop is triggered.
532
533 src/ae.c          | 51 ++++++++++++++++++++++-----------------------------
534 src/ae.h          |  3 +++
535 src/anet.h        |  2 ++
536 src/redis-trib.rb |  2 +-
537 4 files changed, 28 insertions(+), 30 deletions(-)
538
539+-------------------------------------------------------------------------------
540| BITFIELD: overflow wrap behavior fuzz tester.
541| By antirez, 2016-03-02 17:22:42 +0100
542+--------------------------------------------------------------------------------
543https://github.com/antirez/redis/commit/258857cd62e0eb70da32742651a55213fbc28a53
544
545
546 tests/unit/bitfield.tcl | 51 +++++++++++++++++++++++++++++++++++++++++++++++++
547 1 file changed, 51 insertions(+)
548
549+-------------------------------------------------------------------------------
550| BITFIELD basic unit tests.
551| By antirez, 2016-03-02 16:31:02 +0100
552+--------------------------------------------------------------------------------
553https://github.com/antirez/redis/commit/35d05d6dc5d7fb810e732f9de7b05c6b14933fb6
554
555
556 tests/unit/bitfield.tcl | 86 ++++++++++++++++++++++++++++++++++++++++++++++++-
557 1 file changed, 85 insertions(+), 1 deletion(-)
558
559+-------------------------------------------------------------------------------
560| BITFIELD: Farest bit set is offset+bits-1. Off by one error fixed.
561| By antirez, 2016-03-02 16:20:28 +0100
562+--------------------------------------------------------------------------------
563https://github.com/antirez/redis/commit/6cf83feffad7f7b7693a207a9d63278354769ece
564
565
566 src/bitops.c | 6 ++++--
567 1 file changed, 4 insertions(+), 2 deletions(-)
568
569+-------------------------------------------------------------------------------
570| BITFIELD: overflow fuzzy testing.
571| By antirez, 2016-03-02 15:15:18 +0100
572+--------------------------------------------------------------------------------
573https://github.com/antirez/redis/commit/b4d65c9501be01531eb8fbeb4ba2b444e35d6494
574
575
576 tests/test_helper.tcl   |  1 +
577 tests/unit/bitfield.tcl | 52 +++++++++++++++++++++++++++++++++++++++++++++++++
578 2 files changed, 53 insertions(+)
579
580+-------------------------------------------------------------------------------
581| Fix typo in bitops.tcl comment.
582| By antirez, 2016-03-02 15:14:53 +0100
583+--------------------------------------------------------------------------------
584https://github.com/antirez/redis/commit/d75e0fdbe6ecf3074b18c4dd1e8b71a474254ccc
585
586
587 tests/unit/bitops.tcl | 2 +-
588 1 file changed, 1 insertion(+), 1 deletion(-)
589
590+-------------------------------------------------------------------------------
591| More BITFIELD fixes. Overflow conditional simplified.
592| By antirez, 2016-03-02 15:13:45 +0100
593+--------------------------------------------------------------------------------
594https://github.com/antirez/redis/commit/5f3ef73ed41be6e051daad9fdb7efa91b4ca682d
595
596See issue #3114.
597
598 src/bitops.c | 17 ++++++++---------
599 1 file changed, 8 insertions(+), 9 deletions(-)
600
601+-------------------------------------------------------------------------------
602| bitops/bitfield: fix length, overflow condition and *sign
603| By Sun He, 2016-03-02 18:11:30 +0800
604+--------------------------------------------------------------------------------
605https://github.com/antirez/redis/commit/5b9aa5026204fb6c8b0098d4e47c2e001cf06151
606
607
608 src/bitops.c | 13 ++++++++-----
609 1 file changed, 8 insertions(+), 5 deletions(-)
610
611+-------------------------------------------------------------------------------
612| Fix INFO commandstats reporting when argv is rewritten.
613| By antirez, 2016-03-02 08:51:27 +0100
614+--------------------------------------------------------------------------------
615https://github.com/antirez/redis/commit/ba9154d7e7bf959b002533384319a1e90545447b
616
617We want to report the original command in the stats, for example GEOADD,
618even when what is actually executed is the ZADD implementation.
619
620 src/scripting.c | 2 +-
621 src/server.c    | 4 ++--
622 2 files changed, 3 insertions(+), 3 deletions(-)
623
624+-------------------------------------------------------------------------------
625| BITFIELD: refactoring & fix of retval on FAIL.
626| By antirez, 2016-02-29 09:08:46 +0100
627+--------------------------------------------------------------------------------
628https://github.com/antirez/redis/commit/76b22e3728e37fe11582b71802bf98a2be09623f
629
630
631 src/bitops.c | 32 ++++++++++++++++++++++++--------
632 1 file changed, 24 insertions(+), 8 deletions(-)
633
634+-------------------------------------------------------------------------------
635| BITFIELD: Fix #<index> form parsing.
636| By antirez, 2016-02-26 15:53:29 +0100
637+--------------------------------------------------------------------------------
638https://github.com/antirez/redis/commit/c333a9e2d7873190b22aaee8835a188bc55b60dc
639
640
641 src/bitops.c | 10 ++++------
642 1 file changed, 4 insertions(+), 6 deletions(-)
643
644+-------------------------------------------------------------------------------
645| BITFIELD: Support #<index> offsets form.
646| By antirez, 2016-02-26 15:16:24 +0100
647+--------------------------------------------------------------------------------
648https://github.com/antirez/redis/commit/f84871cb5dd3bb3c04bfd7ac53b6e06b246f511f
649
650
651 src/bitops.c | 29 +++++++++++++++++++++++------
652 1 file changed, 23 insertions(+), 6 deletions(-)
653
654+-------------------------------------------------------------------------------
655| BITFIELD command initial implementation.
656| By antirez, 2016-02-25 23:31:45 +0100
657+--------------------------------------------------------------------------------
658https://github.com/antirez/redis/commit/761a77287107ce53dbf4755f1435cc9660b6c86d
659
660The new bitfield command is an extension to the Redis bit operations,
661where not just single bit operations are performed, but the array of
662bits composing a string, can be addressed at random, not aligned
663offsets, with any width unsigned and signed integers like u8, s5, u10
664(up to 64 bit signed integers and 63 bit unsigned integers).
665
666The BITFIELD command supports subcommands that can SET, GET, or INCRBY
667those arbitrary bit counters, with multiple overflow semantics.
668
669Trivial and credits:
670
671A similar command was imagined a few times in the past, but for
672some reason looked a bit far fetched or not well specified.
673Finally the command was proposed again in a clear form by
674Yoav Steinberg from Redis Labs, that proposed a set of commands on
675arbitrary sized integers stored at bit offsets.
676
677Starting from this proposal I wrote an initial specification of a single
678command with sub-commands similar to what Yoav envisioned, using short
679names for types definitions, and adding control on the overflow.
680
681This commit is the resulting implementation.
682
683Examples:
684
685    BITFIELD mykey OVERFLOW wrap INCRBY i2 10 -1 GET i2 10
686
687 src/bitops.c | 506 +++++++++++++++++++++++++++++++++++++++++++++++++++++++----
688 src/server.c |   1 +
689 src/server.h |   1 +
690 3 files changed, 476 insertions(+), 32 deletions(-)
691
692+-------------------------------------------------------------------------------
693| Eliminates engineers near the equator & prime meridian
694| By Itamar Haber, 2016-02-18 15:11:30 -0800
695+--------------------------------------------------------------------------------
696https://github.com/antirez/redis/commit/4b89ea3a95ef72353e14e0eb5cbf293bf2dc8b48
697
698
699 src/geo.c | 8 ++++----
700 1 file changed, 4 insertions(+), 4 deletions(-)
701
702+-------------------------------------------------------------------------------
703| Fixes a typo in a comment
704| By Itamar Haber, 2016-02-18 15:01:34 -0800
705+--------------------------------------------------------------------------------
706https://github.com/antirez/redis/commit/0f46f9bd423a146f96e1993aca6221e1305f9a28
707
708
709 src/geo.c | 2 +-
710 1 file changed, 1 insertion(+), 1 deletion(-)
711
712+-------------------------------------------------------------------------------
713| Adjusts accuracy for GEODIST
714| By Itamar Haber, 2016-02-18 15:00:39 -0800
715+--------------------------------------------------------------------------------
716https://github.com/antirez/redis/commit/9de844603c5203ae6ff6e7882a3dcb47a9f79a85
717
718
719 src/geo.c | 2 +-
720 1 file changed, 1 insertion(+), 1 deletion(-)
721
722+-------------------------------------------------------------------------------
723| addReplyHumanLongDouble() API added.
724| By antirez, 2016-02-18 22:08:47 +0100
725+--------------------------------------------------------------------------------
726https://github.com/antirez/redis/commit/79e553a58d7f814fd08482b118561fcf9854b1df
727
728Send a long double or double as a bulk reply, in a human friendly
729format.
730
731 src/networking.c | 9 +++++++++
732 src/server.h     | 1 +
733 2 files changed, 10 insertions(+)
734
735+-------------------------------------------------------------------------------
736| Fix GEORADIUS STORE/DIST refcount after backport to 3.2.
737| By antirez, 2016-02-18 15:33:02 +0100
738+--------------------------------------------------------------------------------
739https://github.com/antirez/redis/commit/158d1e2fbf6badb881a4d78623fd1bffde34cc49
740
741
742 src/geo.c | 2 ++
743 1 file changed, 2 insertions(+)
744
745+-------------------------------------------------------------------------------
746| GEOADD STORE/STOREDIST tests.
747| By antirez, 2016-02-18 14:42:42 +0100
748+--------------------------------------------------------------------------------
749https://github.com/antirez/redis/commit/123cd88286127cc20684bf0457cb51107a67cfa2
750
751
752 tests/unit/geo.tcl | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
753 1 file changed, 54 insertions(+)
754
755+-------------------------------------------------------------------------------
756| New options for GEORADIUS: STORE and STOREDIST.
757| By antirez, 2016-02-18 10:24:11 +0100
758+--------------------------------------------------------------------------------
759https://github.com/antirez/redis/commit/0b6daf5a6b27447f03c76387b8b707ce0ab7b08d
760
761Related to issue #3019.
762
763 src/geo.c    | 143 +++++++++++++++++++++++++++++++++++++++++------------------
764 src/server.c |   4 +-
765 src/server.h |   1 +
766 src/t_zset.c |  18 +++++---
767 4 files changed, 117 insertions(+), 49 deletions(-)
768
769+-------------------------------------------------------------------------------
770| Include full paths on RDB/AOF files errors.
771| By antirez, 2016-02-15 16:14:56 +0100
772+--------------------------------------------------------------------------------
773https://github.com/antirez/redis/commit/f7af1beaab938b7e319d1b91d7736f043b7ef682
774
775Close #3086.
776
777 src/aof.c | 17 +++++++++++++++--
778 src/rdb.c | 19 +++++++++++++++++--
779 2 files changed, 32 insertions(+), 4 deletions(-)
780
781+-------------------------------------------------------------------------------
782| Remove Lua state reference from buffers in lua_cmsgpack.
783| By antirez, 2016-02-10 09:12:17 +0100
784+--------------------------------------------------------------------------------
785https://github.com/antirez/redis/commit/0b4a628fc716ab6b88c9823b143de174601a790d
786
787
788 deps/lua/src/lua_cmsgpack.c | 53 +++++++++++++++++++++------------------------
789 1 file changed, 25 insertions(+), 28 deletions(-)
790
791+-------------------------------------------------------------------------------
792| cmsgpack: pass correct osize values to lua allocator, update correct buf free space in cmsgpack
793| By [email protected], 2016-02-07 20:24:28 +0200
794+--------------------------------------------------------------------------------
795https://github.com/antirez/redis/commit/43509f686452fba68966aa89b87d1be065b50e17
796
797
798 deps/lua/src/lua_cmsgpack.c | 8 ++++----
799 1 file changed, 4 insertions(+), 4 deletions(-)
800
801+-------------------------------------------------------------------------------
802| Fixes a typo
803| By Itamar Haber, 2016-02-03 11:04:09 -0800
804+--------------------------------------------------------------------------------
805https://github.com/antirez/redis/commit/cd9f7c6976f81c0e9ffae9e34b31eda19384a7dd
806
807
808 src/server.c | 4 ++--
809 1 file changed, 2 insertions(+), 2 deletions(-)
810
811+-------------------------------------------------------------------------------
812| Adds keyspace notifications for lrem
813| By Itamar Haber, 2016-02-02 09:58:19 -0800
814+--------------------------------------------------------------------------------
815https://github.com/antirez/redis/commit/bf30f5a73922e5111d6a39da7351e22357213134
816
817
818 src/t_list.c | 7 ++++++-
819 1 file changed, 6 insertions(+), 1 deletion(-)
820
821+-------------------------------------------------------------------------------
822| Typo ASII -> ASCII fixed in comment.
823| By antirez, 2016-01-29 12:08:10 +0100
824+--------------------------------------------------------------------------------
825https://github.com/antirez/redis/commit/0c7c7631d206964b8bf1dae3db286a3acda4edad
826
827
828 src/server.h | 2 +-
829 1 file changed, 1 insertion(+), 1 deletion(-)
830
831+-------------------------------------------------------------------------------
832| Cluster: include node IDs in SLOTS output.
833| By antirez, 2016-01-29 12:00:38 +0100
834+--------------------------------------------------------------------------------
835https://github.com/antirez/redis/commit/0f3fb0097ae70e36ee65468b79f0be4160934bb4
836
837CLUSTER SLOTS now includes IDs in the nodes description associated with
838a given slot range. Certain client libraries implementations need a way
839to reference a node in an unique way, so they were relying on CLUSTER
840NODES, that is not a stable API and may change frequently depending on
841Redis Cluster future requirements.
842
843 src/cluster.c | 8 ++++++--
844 1 file changed, 6 insertions(+), 2 deletions(-)
845
846
847~~~~~~~~~~~~~~~~~~~~~~~~~~ OLD STYLE CHANGELOG ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
848
849--[ Redis 3.2.0 RC3 (version 3.1.103) ] Release date: 28 jan 2016
850
851Upgrade urgency MODERATE: this release fixes a non trivial Sentinel crash.
852
853* [FIX] avg_ttl reporting in INFO improved. (Salvatore Sanfilippo)
854* [FIX] Sentinel: improve handling of known Sentinel instances.
855        (Salvatore Sanfilippo, thanks to Paweł Kowalczykf or the original
856         crash report).
857* [FIX] Redis Cluster address update (via gossip section) processing improved
858        to avoid initiating inwanted handshakes.
859
860--[ Redis 3.2.0 RC2 (version 3.1.102) ] Release date: 25 jan 2016
861
862Upgrade urgency MODERATE: this release fixes important Redis Cluster bugs.
863
864* [FIX] Many fixes to MIGRATE multiple keys implementation. The command
865        could handle errors in a faulty way leading to crashes or other
866        unexpected behaviors. MIGRATE command refactoring.
867        (The analysis of the faulty conditions was conducted by
868         Kevin McGehee. The fix was developed by Salvatore Sanfilippo)
869* [FIX] A Redis Cluster node crash was fixed because of wrong handling of
870        node->slaveof pointers.
871        (Reported by JackyWoo, fixed by Salvatore Sanfilippo)
872* [FIX] Fix redis-trib rebalance when nodes need to be left empty because
873        the specified weight is zero.
874        (Reported by Shahar Mor, fixed by Salvatore Sanfilippo)
875* [FIX] MIGRATE: Never send -ASK redirections for MIGRATE when there are
876        open slots. Redis-trib and other cluster management utility must
877        always be free to move keys between nodes about open slots, in order
878        to reshard, fix the cluster configuration, and so forth.
879        (Salvatore Sanfilippo)
880* [FIX] Lua debugger crash when printing too deeply nested objects.
881        (Reported by Paul Kulchenko, fixed by Salvatore Sanfilippo)
882* [FIX] Redis-cli implementation of Lua debugging now allows to use the
883        SCRIPT DEBUG command directly, switching to debugging mode as needed.
884        (Reported by Paul Kulchenko, fixed by Salvatore Sanfilippo)
885* [FIX] Redis-trib is now able to fix more errors. A new CLUSTER subcommand
886        called BUMPEPOCH was introduced in order to support new modes
887        for the "fix" subcommand. (Salvatore Sanfilippo)
888* [NEW] Redis proctected mode: this feature improves Redis security and makes
889        harder to run Redis in a configuration that is unsecure because no
890        firewalling was used in order to protect Redis from external accesses.
891        See this Reddit post for more info: https://www.reddit.com/r/redis/comments/3zv85m/new_security_feature_redis_protected_mode/ (Salvatore Sanfilippo)
892* [NEW] Cluster/Sentinel tests now use OSX leak to perform leak detection
893        at the end of every unit. (Salvatore Sanfilippo)
894* [NEW] Detect and show server crashes during Cluster/Sentinel tests.
895        (Salvatore Sanfilippo)
896* [NEW] More reliable Cluster/Sentinel test becuase of timing errors and
897        -LOADING errors. (Salvatore Sanfilippo)
898
899--[ Redis 3.2.0 RC1 (version 3.1.101) ] Release date: 23 dec 2015
900
901This is the first release candidate of Redis 3.2. The changelog above shows
902what's new in this release. In the next of the following weeks we'll test
903in depth every feature and we'll release new RCs as bugs are discovered
904and fixed. Note that while 3.2 looks solid already, it contains many changes
905to its internals. It's still fresh code compared to 3.0.
906
907General changes:
908
909* [NEW] Lua scripts "effect replication". Makes possible to write scripts
910        with side effects, use of random commands, and so forth.
911        (Salvatore Sanfilippo)
912* [NEW] Lua scripts selective replication. Makes possible to replicate to
913        slaves and AOF only selected parts of a script. (Design by
914        Yossi Gottlieb and Salvatore Sanfilippo, implemented by Salvatore)
915* [NEW] Geo indexing support via GEOADD, GEORADIUS and other commands.
916        See http://redis.io/commands/geoadd for more information.
917        (Initially implemented in a fork of Redis called "Ardb".
918         Matt Stancliff "imported back" the work to Redis and created the
919         initial API and implementation. Salvatore Sanfilippo modified
920         the API and the implementation, fixed bugs, improved performances
921         and unified the duplicated code with t_zset.c)
922* [NEW] Lua debugger. A complete stepping, remote debugger for Lua scripts.
923        Video here: https://www.youtube.com/watch?v=IMvRfStaoyM
924        (Salvatore Sanfilippo with many feedbacks and testing from
925         Itamar Haber)
926* [NEW] SDS improvements for speed and maximum string length.
927        This makes Redis more memory efficient in different use cases.
928        (Design and implementation by Oran Agra, some additional work
929         by Salvatore Sanfilippo)
930* [NEW] Modify Jemalloc size classes to make certain Redis objects fit
931        better, improving memory efficiency. (Oran Agra)
932* [NEW] Better consistency behavior between masters and slaves for expired
933        keys. The slaves are only able to logically consider a key expired
934        even before receiving the `DEL` command from the master. This avoids
935        the delay there is sometimes between the natural expire of the key
936        and the moment the slave is notified. (Salvatore Sanfilippo)
937* [NEW] Support daemon supervision by upstart or systemd (Pierre-Yves Ritschard)
938* [NEW] New encoding for the List type: Quicklists. Very important memory
939        savings and storage space in RDB gains (up to 10x sometimes).
940        (Design and implementation by Matt Stancliff. RDB storage reworked
941         by Salvatore Sanfilippo)
942* [NEW] SPOP with optional count argument. (Initial implementation by
943        Alon Diamant, mostly reimplemented by Salvatore Sanfilippo for speed
944        and in order to make the replication of a this class of commands,
945        having as logical effect the execution of multiple commands, possible).
946* [NEW] Support for RDB AUX fields. Now RDB files contain additional info
947        like the creation date, version of Redis generating it and so forth.
948        (Salvatore Sanfilippo)
949* [NEW] Faster RDB loading via the RESIZEDB opcode to avoid useless hash tables
950        rehashings. (Salvatore Sanfilippo)
951* [NEW] HSTRLEN command. (@landmime and Salvatore Sanfilippo)
952* [NEW] CONFIG SET/GET implementations refactored, partially rewritten,
953        now exposing more config options. (Salvatore Sanfilippo)
954* [NEW] CLUSTER NODES major speedup. (Salvatore Sanfilippo)
955* [NEW] CLIENT KILL TYPE MASTER, to kill (disconnect) masters from slaves.
956        (Salvatore Sanfilippo)
957* [NEW] Jemalloc updated to 4.0.3 (Salvatore Sanfilippo)
958* [NEW] DEBUG RESTART/CRASH-AND-RECOVER [delay] (Salvatore Sanfilippo)
959* [NEW] CLIENT REPLY command implemented: ON, OFF and SKIP modes.
960        (Salvatore Sanfilippo)
961* [NEW] Crash report produced by Redis on crash improved. (Salvatore Sanfilippo)
962* [NEW] Better memory test on crash. (Salvatore Sanfilippo)
963
964Redis Cluster changes:
965
966All the Redis Cluster changes in 3.2 were backported to 3.0, so there is
967technically nothing new for now in this release. The most important things
968are:
969
970* Cluster rebalancing.
971* A pipelined MIGRATE command which is 10x faster and makes resharding
972  and rebalancing faster.
973* Improved replicas migration.
974* As a side effect of quicklists encoding (see above items), moving big
975  lists between nodes is now a lot faster.
976
977Redis Sentinel changes:
978
979* [NEW] Sentinel connection sharing. Makes Sentinels able to scale to
980        monitor many masters. (Salvatore Sanfilippo)
981* [NEW] New SENTINEL INFO-CACHE command. (Matt Stancliff)
982* More things backported to Redis 3.0 in the past, so no longer news of 3.2.
983
984Migrating from 3.0 to 3.2
985=========================
986
987Redis 3.0 is mostly a strict subset of 3.2, you should not have any problem
988upgrading your application from 3.0 to 3.2. However this is a list of small
989non-backward compatible changes introduced in the 3.2 release:
990
991* The default configuration file now binds to 127.0.0.1.
992* Slaves try to no longer expose stale data about already expired keys.
993* The RDB format changed. Redis 3.2 is still able to read 3.0 (and all the
994  past versions) files, but not the other way around.
995* Behavior on crash may be different. The crash log format changed and
996  the memory test executed is now different.
997
998--------------------------------------------------------------------------------
999
1000Credits: For each release, a list of changes with the relative author is
1001provided. Where not specified the implementation and design is done by
1002Salvatore Sanfilippo. Thanks to Redis Labs for making all this possible.
1003Also many thanks to all the other contributors and the amazing community
1004we have.
1005
1006Commit messages may contain additional credits.
1007
1008Cheers,
1009Salvatore
1010