Lettuce 5.1.0.M1 发布,这是 Lettuce 5.1 发布的第一个预览版本,包含改进和错误修复。Lettuce 5.1.0.M1 需要 Java 8,Java 9 或 Java 10 环境。
此次比较显著的变化有:
Redis Streams 的 API 预览
异步池实现
SCAN 流和初始化
全局命令超时(默认情况下禁用)
主/从和 Sentinel 的异步连接方法
具体更新内容如下:
Add AUTH option to MIGRATE command #733
Add MASTER type to KillArgs #760
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
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
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
详情见 发布公告 。