Lettuce 5.1.0.M1 釋出,帶來 5 大功能特性變更

類別: IT
Lettuce

Lettuce 5.1.0.M1 釋出,這是 Lettuce 5.1 釋出的第一個預覽版本,包含改進和錯誤修復。Lettuce 5.1.0.M1 需要 Java 8,Java 9 或 Java 10 環境。

此次比較顯著的變化有:

  • Redis Streams 的 API 預覽

  • 非同步池實現

  • SCAN 流和初始化

  • 全域性命令超時(預設情況下禁用)

  • 主/從和 Sentinel 的非同步連線方法

具體更新內容如下:

Commands

  • Add AUTH option to MIGRATE command #733

  • Add MASTER type to KillArgs #760

Enhancements

  • Support for command timeouts (async, reactive) #435

  • Use object pooling for collections inside a single method and Command/CommandArgs with a small scope #459

  • Add support for Redis streams #606

  • Introduce dedicated exceptions for NOSCRIPT and BUSY responses #620(Thanks to @DaichiUeura)

  • Non-blocking connection pooling #631

  • Introduce fast-path publishing in RedisPublisher #637

  • Add reactive scanning #638

  • Asynchronous connection initialization #640

  • Create reusable abstraction for non-blocking and keyed connection provider #642

  • Expose asynchronous connect method for Master/Slave connections #643

  • Add SocketAddressOutput to directly parse SENTINEL get-master-addr-by-name output #644

  • Misleading wasRolledBack method #662(Thanks to @graineri)

  • Read from random slave preferred #676(Thanks to @petetanton)

  • Introduce exception to represent Redis LOADING response #682

  • Do not fail if COMMAND command fails on startup #685(Thanks to @pujian1984)

  • CommandHandler.write() is O(N^2) #709(Thanks to @gszpak)

  • Cluster topology lookup should not replaces self-node details with host and port from RedisURI when RedisURI is load balancer #712(Thanks to @warrenzhu25)

  • Optimize Partitions/RedisClusterNode representation #715

  • Unnecessary copying of byteBuf in CommandHandler.decode() #725(Thanks to @gszpak)

  • Add unknown node as trigger for adaptive refresh #732

Fixes

  • PING responses are not decoded properly if Pub/Sub connection is subscribed #579

  • Lettuce doesn't fail early & cleanly with a host in protected mode #608(Thanks to @exercitussolus)

  • CommandHandler.rebuildQueue() causes long locks #615(Thanks to @nikolayspb)

  • Request queue size is not cleared on reconnect #616(Thanks to @nikolayspb)

  • BITPOS should allow to just specify start. #623(Thanks to @christophstrobl)

  • HMGET proxy not working as expected #627(Thanks to @moores-expedia)

  • Consider binary arguments using command interfaces as keys using binary codecs #628

  • Command.isDone() not consistent with CompletableFuture.isDone() #629

  • Race condition in RedisPublisher DEMAND.request() and DEMAND.onDataAvailable() #634(Thanks to @mayamoon)

  • RedisPublisher.request(-1) does not fail #635

  • Capture subscription state before logging in RedisPublisher #636

  • Provide Javadoc path for Project Reactor #641

  • Debug logging of ConnectionWatchdog has wrong prefix after reconnect. #645(Thanks to @mlex)

  • Cannot close connection when refreshing topology #656(Thanks to @dangtranhoang)

  • Weights param should be ignored if it is empty #657(Thanks to @garfeildma)

  • MasterSlave getNodeSpecificViews NPE with sync API #659(Thanks to @boughtonp)

  • RandomServerHandler can respond zero bytes #660

  • ConcurrentModificationException when connecting a RedisClusterClient #663(Thanks to @blahblahasdf)

  • Switch RedisSubscription.subscriber to volatile #664

  • Recovered Sentinels in Master/Slave not reconnected #668

  • Handling dead Sentinel slaves #669(Thanks to @vleushin)

  • Move SocketAddressResolver resolution back to calling thread #670

  • Support SLAVE_PREFERRED at valueOf method #671(Thanks to @be-hase)

  • RedisCommandTimeoutException after two subsequent MULTI calls without executing the transaction #673(Thanks to @destitutus)

  • Fix ConnectionWatchDog won't reconnect problem in edge case #679(Thanks to @kojilin)

  • At least once mode keeps requeueing commands on non-recoverable errors #680(Thanks to @mrvisser)

  • Retain ssl/tls config from seed uris in Master/Slave context #684(Thanks to @acmcelwee)

  • NOAUTH after full queue and reconnect #691

  • RedisURI.create("localhost") causes NPE #694

  • Async connect methods report original cause #708

  • Mono returned by RedisPubSubReactiveCommands#subscribe does not return result #717(Thanks to @ywtsang)

  • RuntimeExceptions thrown by implementations of RedisCodec do not fail TransactionCommands #719(Thanks to @blahblahasdf)

  • Connection Leak in Cluster Topology Refresh #721(Thanks to @cweitend)

  • Ensure Master/Slave topology refresh connections are closed #723

  • RedisPubSubAdapter.message() being called with wrong channel #724(Thanks to @adimarco)

  • Batched commands may time out although data was received #729

  • DefaultEndpoint future listener recycle lose command context on requeue failures #734(Thanks to @gszpak)

  • AsyncPool, AsyncConnectionPoolSupport are nowhere to be found #739(Thanks to @fabienrenaud)

  • firstResponseLatency is always negative #740(Thanks to @nickvollmar)

  • EXEC does not fail on EXECABORT #743(Thanks to @dmandalidis)

  • Warning when refreshing topology #756(Thanks to @theliro)

  • DefaultEndpoint.QUEUE_SIZE becomes out of sync, preventing command queueing #764(Thanks to @nivekastoreth)

  • DefaultEndpoint contains System.out.println(…) #765

  • Do not retry completed commands through RetryListener #767

Other

  • Upgrade to netty 4.0.53.Final/4.1.17.Final #646

  • Upgrade to Reactor Bismuth SR4 #647

  • Upgrade to Spring Framework 4.3.12 #648

  • Upgrade to Commons Pool 2.4.3 #650

  • Upgrade to RxJava 1.3.3 #651

  • Upgrade to RxJava2 2.1.6 #652

  • Upgrade to HdrHistogram 2.1.10 #653

  • Upgrade Redis versions on TravisCI #655

  • Upgrade to Reactor Bismuth SR5 #698

  • Upgrade to netty 4.1.21.Final #699

  • Upgrade to RxJava 1.3.6 #700

  • Upgrade to RxJava 2.1.9 #701

  • Upgrade to Reactor Bismuth SR6 #704

  • Upgrade to Netty 4.1.22 #744

  • Upgrade to RxJava 1.3.7 #745

  • Upgrade to Spring Framework 4.3.14 #746

  • Upgrade to Mockito 2.17 #747

  • Upgrade to AssertJ 3.9.1 #748

  • Upgrade to Log4j 2.11.0 #749

  • Upgrade to commons-lang3 3.7 #750

  • Upgrade to netty 4.1.23.Final #755

  • Upgrade to Reactor Bismuth SR8 #758

  • Upgrade to RxJava 1.3.8 #759

  • Extend documentation for argument objects #761

  • Upgrade to JavaParser 3.6.3 #769

  • Upgrade to netty 4.1.24.Final #770

  • Upgrade to RxJava 2.1.13 #771

詳情見釋出公告

下載地址

  • lettuce-core-5.1.0.M1-bin.tar.gz

  • lettuce-core-5.1.0.M1-bin.tar.gz.asc

  • lettuce-core-5.1.0.M1-bin.tar.gz.md5

  • lettuce-core-5.1.0.M1-bin.tar.gz.sha1

  • lettuce-core-5.1.0.M1-bin.zip

  • lettuce-core-5.1.0.M1-bin.zip.asc

  • lettuce-core-5.1.0.M1-bin.zip.md5

  • lettuce-core-5.1.0.M1-bin.zip.sha1

  • Source code(zip)

  • Source code(tar.gz)

Lettuce 5.1.0.M1 釋出,帶來 5 大功能特性變更原文請看這裡