1- lettuce 4.0.Beta1 RELEASE NOTES
1+ # lettuce 4.0.Beta2 RELEASE NOTES
22
33This release is a major release that introduces numerous changes like stateful connections,
44the reactive API and many more. Lettuce 4.0 includes all features from lettuce 3.3.
55
6+ ** Highlights of lettuce 4.0.Beta2**
7+
8+ * Reactive API
9+ * Stateful connections
10+ * Cross-slot command execution
11+ * Node Selection API/Execution of commands on multiple cluster nodes
12+ * ReadFrom Settings/Redis Cluster slave reads
13+ * Custom commands
14+
615This release contains some breaking changes. You may want to consult the
716wiki at https://github.com/mp911de/lettuce/wiki/Migration-from-3.x-to-4.x
817to check the migration guide.
@@ -56,7 +65,8 @@ Rearchitecting the API
5665-----
5766Before 4.0, connection resources (sockets, events) were bound to the particular API.
5867If one wanted to use a different API, he had to create another connection to Redis.
59- This coupling is loosed now. By calling ` connect() ` you will no longer get a synchronous connection, you will get a ` StatefulRedisConnection `
68+ This coupling is loosed now. By calling ` connect() ` you will no longer get a synchronous connection,
69+ you will get a ` StatefulRedisConnection `
6070with the access to the synchronous, asynchronous and reactive API.
6171All commands are executed using netty and it does not matter, from which API you come.
6272
@@ -205,6 +215,27 @@ This API is a technical preview, so your feedback is highly appreciated.
205215
206216Read more: https://github.com/mp911de/lettuce/wiki/Redis-Cluster-(4.0)
207217
218+
219+ ReadFrom Settings/Redis Cluster slave reads
220+ -------------------------------------------
221+ The ` ReadFrom ` setting describes how lettuce routes read operations to the members of a Redis Cluster.
222+
223+ By default, lettuce routes its read operations to the master node. Reading from the master returns the most recent
224+ version of the data because write operations are issued to the single master node. Reading from
225+ masters guarantees strong consistency.
226+
227+ The ` ReadFrom ` setting can be set to one of the following presets:
228+
229+ * ` MASTER ` Default mode. Read from the current master node.
230+ * ` MASTER_PREFERRED ` Read from the master, but if it is unavailable, read from slave nodes.
231+ * ` SLAVE ` Read from slave nodes.
232+ * ` NEAREST ` Read from any node of the cluster with the lowest latency.
233+
234+ Custom read settings can be implemented by extending the ` com.lambdaworks.redis.ReadFrom ` class.
235+
236+ Read more: https://github.com/mp911de/lettuce/wiki/ReadFrom-Settings
237+
238+
208239Custom commands
209240---------------
210241Lettuce covers nearly all Redis commands. Redis development is an ongoing process,
@@ -228,37 +259,69 @@ connection.dispatch(async);
228259
229260Read more: https://github.com/mp911de/lettuce/wiki/Custom-commands%2C-outputs-and-command-mechanics
230261
262+ Codec API improvements
263+ ----------------------
264+ The RedisCodec API was aligned to a consistent interchange type and migrated to an interface.
265+ The RedisCodec interface accepts and returns ` ByteBuffer ` for data interchange. A ` ByteBuffer is not `
266+ opinionated about the source of the underlying bytes and such it does not require users to duplicate existing
267+ data as it was enforced by a ` byte[] ` . Lettuce provides ` UTF-8 ` and ` byte[] ` codecs and allows users to
268+ create and use their own codecs. XML, JSON and Java-serialization are good examples for codecs.
269+
270+ This release also brings a value compressor which allows you to compress values using GZIP or Deflate
271+ compressions. Value compression is transparent and can be used with any codec.
272+
273+ ``` java
274+ RedisCommands<String , Object > connection = client. connect(
275+ CompressionCodec . valueCompressor(new SerializedObjectCodec (), CompressionCodec . CompressionType . GZIP )). sync();
276+
277+ RedisCommands<String , String > connection = client. connect(
278+ CompressionCodec . valueCompressor(new Utf8StringCodec (), CompressionCodec . CompressionType . DEFLATE )). sync();
279+ ```
280+
281+
282+ Read more: https://github.com/mp911de/lettuce/wiki/Codecs-%284.x%29
283+
231284
232285Updated dependencies
233286--------------------
234- * rxjava 1.0.13 (new)
287+ * rxjava 1.0.14 (new)
235288* Google Guava 17.0 -> 18.0
236289* netty 4.0.28.Final 4.0.30.Final
237290* commons-pool2 2.2 -> 2.4.2
238291
239292
240293Enhancements
241294------------
242- * Advanced Cluster API (async) #78
243- * Implement synchronous multi-node execution API enhancement #129
244- * Improve HLL command interface #77
245- * Move segregated API interfaces to own packages #76
246- * Provide a stateful Redis connection and decouple sync/async API from connection resources #75
247- * Reactive support #68
248- * Pipelining for certain cluster commands #66
249- * Drop support for Java 6 and Java 7 #50
250295* Migrate RedisFuture to CompletionStage #48
296+ * Drop support for Java 6 and Java 7 #50
297+ * Pipelining for certain cluster commands #66
298+ * Reactive support #68
299+ * Provide a stateful Redis connection and decouple sync/async API from connection resources #75
300+ * Move segregated API interfaces to own packages #76
301+ * Improve HLL command interface #77
302+ * Advanced Cluster API (async) #78
303+ * Provide a sync API for Redis Sentinel #79
304+ * Remove Java 6/7 parts of JavaRuntime and use netty's SslContextBuilder #85
305+ * Support geo commands in lettuce 4.0 #87
306+ * Run certain commands from the advanced cluster connection on multiple hosts #106
251307* Allow limiting the request queue size #115
252308* Improve Codec API #118
253309* Allow to read from master/slave/nearest node when using Redis Cluster #114
254310* Documentation of custom commands #122
311+ * Implement a CompressionCodec for GZIP and Deflate compression #127
312+ * Implement synchronous multi-node execution API #129
255313
256314Fixes
257315-----
316+ * CI: Build ran into OutOfMemoryError: Java heap space #84
317+ * Use Sucess instead of Void in the reactive API #128
258318
259319Other
260320------
321+ * Documentation for 4.0 #83
322+ * Improve performance in 4.0 #91
261323* Update Dependencies for lettuce 4.0 #116
324+ * Documentation of custom commands #122
262325
263326
264327lettuce requires a minimum of Java 8 to build and run. It is tested continuously against the latest Redis source-build.
0 commit comments