xref: /redis-3.2.3/00-RELEASENOTES (revision 38cf2bd2)
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--[ Redis 3.2.0 RC3 (version 3.1.103) ] Release date: 28 jan 2016
14
15Upgrade urgency MODERATE: this release fixes a non trivial Sentinel crash.
16
17* [FIX] avg_ttl reporting in INFO improved. (Salvatore Sanfilippo)
18* [FIX] Sentinel: improve handling of known Sentinel instances.
19        (Salvatore Sanfilippo, thanks to Paweł Kowalczykf or the original
20         crash report).
21* [FIX] Redis Cluster address update (via gossip section) processing improved
22        to avoid initiating inwanted handshakes.
23
24--[ Redis 3.2.0 RC2 (version 3.1.102) ] Release date: 25 jan 2016
25
26Upgrade urgency MODERATE: this release fixes important Redis Cluster bugs.
27
28* [FIX] Many fixes to MIGRATE multiple keys implementation. The command
29        could handle errors in a faulty way leading to crashes or other
30        unexpected behaviors. MIGRATE command refactoring.
31        (The analysis of the faulty conditions was conducted by
32         Kevin McGehee. The fix was developed by Salvatore Sanfilippo)
33* [FIX] A Redis Cluster node crash was fixed because of wrong handling of
34        node->slaveof pointers.
35        (Reported by JackyWoo, fixed by Salvatore Sanfilippo)
36* [FIX] Fix redis-trib rebalance when nodes need to be left empty because
37        the specified weight is zero.
38        (Reported by Shahar Mor, fixed by Salvatore Sanfilippo)
39* [FIX] MIGRATE: Never send -ASK redirections for MIGRATE when there are
40        open slots. Redis-trib and other cluster management utility must
41        always be free to move keys between nodes about open slots, in order
42        to reshard, fix the cluster configuration, and so forth.
43        (Salvatore Sanfilippo)
44* [FIX] Lua debugger crash when printing too deeply nested objects.
45        (Reported by Paul Kulchenko, fixed by Salvatore Sanfilippo)
46* [FIX] Redis-cli implementation of Lua debugging now allows to use the
47        SCRIPT DEBUG command directly, switching to debugging mode as needed.
48        (Reported by Paul Kulchenko, fixed by Salvatore Sanfilippo)
49* [FIX] Redis-trib is now able to fix more errors. A new CLUSTER subcommand
50        called BUMPEPOCH was introduced in order to support new modes
51        for the "fix" subcommand. (Salvatore Sanfilippo)
52* [NEW] Redis proctected mode: this feature improves Redis security and makes
53        harder to run Redis in a configuration that is unsecure because no
54        firewalling was used in order to protect Redis from external accesses.
55        See this Reddit post for more info: https://www.reddit.com/r/redis/comments/3zv85m/new_security_feature_redis_protected_mode/ (Salvatore Sanfilippo)
56* [NEW] Cluster/Sentinel tests now use OSX leak to perform leak detection
57        at the end of every unit. (Salvatore Sanfilippo)
58* [NEW] Detect and show server crashes during Cluster/Sentinel tests.
59        (Salvatore Sanfilippo)
60* [NEW] More reliable Cluster/Sentinel test becuase of timing errors and
61        -LOADING errors. (Salvatore Sanfilippo)
62
63--[ Redis 3.2.0 RC1 (version 3.1.101) ] Release date: 23 dec 2015
64
65This is the first release candidate of Redis 3.2. The changelog above shows
66what's new in this release. In the next of the following weeks we'll test
67in depth every feature and we'll release new RCs as bugs are discovered
68and fixed. Note that while 3.2 looks solid already, it contains many changes
69to its internals. It's still fresh code compared to 3.0.
70
71General changes:
72
73* [NEW] Lua scripts "effect replication". Makes possible to write scripts
74        with side effects, use of random commands, and so forth.
75        (Salvatore Sanfilippo)
76* [NEW] Lua scripts selective replication. Makes possible to replicate to
77        slaves and AOF only selected parts of a script. (Design by
78        Yossi Gottlieb and Salvatore Sanfilippo, implemented by Salvatore)
79* [NEW] Geo indexing support via GEOADD, GEORADIUS and other commands.
80        See http://redis.io/commands/geoadd for more information.
81        (Initially implemented in a fork of Redis called "Ardb".
82         Matt Stancliff "imported back" the work to Redis and created the
83         initial API and implementation. Salvatore Sanfilippo modified
84         the API and the implementation, fixed bugs, improved performances
85         and unified the duplicated code with t_zset.c)
86* [NEW] Lua debugger. A complete stepping, remote debugger for Lua scripts.
87        Video here: https://www.youtube.com/watch?v=IMvRfStaoyM
88        (Salvatore Sanfilippo with many feedbacks and testing from
89         Itamar Haber)
90* [NEW] SDS improvements for speed and maximum string length.
91        This makes Redis more memory efficient in different use cases.
92        (Design and implementation by Oran Agra, some additional work
93         by Salvatore Sanfilippo)
94* [NEW] Modify Jemalloc size classes to make certain Redis objects fit
95        better, improving memory efficiency. (Oran Agra)
96* [NEW] Better consistency behavior between masters and slaves for expired
97        keys. The slaves are only able to logically consider a key expired
98        even before receiving the `DEL` command from the master. This avoids
99        the delay there is sometimes between the natural expire of the key
100        and the moment the slave is notified. (Salvatore Sanfilippo)
101* [NEW] Support daemon supervision by upstart or systemd (Pierre-Yves Ritschard)
102* [NEW] New encoding for the List type: Quicklists. Very important memory
103        savings and storage space in RDB gains (up to 10x sometimes).
104        (Design and implementation by Matt Stancliff. RDB storage reworked
105         by Salvatore Sanfilippo)
106* [NEW] SPOP with optional count argument. (Initial implementation by
107        Alon Diamant, mostly reimplemented by Salvatore Sanfilippo for speed
108        and in order to make the replication of a this class of commands,
109        having as logical effect the execution of multiple commands, possible).
110* [NEW] Support for RDB AUX fields. Now RDB files contain additional info
111        like the creation date, version of Redis generating it and so forth.
112        (Salvatore Sanfilippo)
113* [NEW] Faster RDB loading via the RESIZEDB opcode to avoid useless hash tables
114        rehashings. (Salvatore Sanfilippo)
115* [NEW] HSTRLEN command. (@landmime and Salvatore Sanfilippo)
116* [NEW] CONFIG SET/GET implementations refactored, partially rewritten,
117        now exposing more config options. (Salvatore Sanfilippo)
118* [NEW] CLUSTER NODES major speedup. (Salvatore Sanfilippo)
119* [NEW] CLIENT KILL TYPE MASTER, to kill (disconnect) masters from slaves.
120        (Salvatore Sanfilippo)
121* [NEW] Jemalloc updated to 4.0.3 (Salvatore Sanfilippo)
122* [NEW] DEBUG RESTART/CRASH-AND-RECOVER [delay] (Salvatore Sanfilippo)
123* [NEW] CLIENT REPLY command implemented: ON, OFF and SKIP modes.
124        (Salvatore Sanfilippo)
125* [NEW] Crash report produced by Redis on crash improved. (Salvatore Sanfilippo)
126* [NEW] Better memory test on crash. (Salvatore Sanfilippo)
127
128Redis Cluster changes:
129
130All the Redis Cluster changes in 3.2 were backported to 3.0, so there is
131technically nothing new for now in this release. The most important things
132are:
133
134* Cluster rebalancing.
135* A pipelined MIGRATE command which is 10x faster and makes resharding
136  and rebalancing faster.
137* Improved replicas migration.
138* As a side effect of quicklists encoding (see above items), moving big
139  lists between nodes is now a lot faster.
140
141Redis Sentinel changes:
142
143* [NEW] Sentinel connection sharing. Makes Sentinels able to scale to
144        monitor many masters. (Salvatore Sanfilippo)
145* [NEW] New SENTINEL INFO-CACHE command. (Matt Stancliff)
146* More things backported to Redis 3.0 in the past, so no longer news of 3.2.
147
148Migrating from 3.0 to 3.2
149=========================
150
151Redis 3.0 is mostly a strict subset of 3.2, you should not have any problem
152upgrading your application from 3.0 to 3.2. However this is a list of small
153non-backward compatible changes introduced in the 3.2 release:
154
155* The default configuration file now binds to 127.0.0.1.
156* Slaves try to no longer expose stale data about already expired keys.
157* The RDB format changed. Redis 3.2 is still able to read 3.0 (and all the
158  past versions) files, but not the other way around.
159* Behavior on crash may be different. The crash log format changed and
160  the memory test executed is now different.
161
162--------------------------------------------------------------------------------
163
164Credits: For each release, a list of changes with the relative author is
165provided. Where not specified the implementation and design is done by
166Salvatore Sanfilippo. Thanks to Redis Labs for making all this possible.
167Also many thanks to all the other contributors and the amazing community
168we have.
169
170Commit messages may contain additional credits.
171
172Cheers,
173Salvatore
174