Spring下Redis的響應式編程

使用Spring進行Redis響應式編程
Spring5支持響應式編程方式,能大大提升系統的吞吐量,可是要想實現整個系統的響應式編程須要每一個環節都要實現,今天就來說講Spring是如何實現Redis的響應編程的。spring

Spring Data Redis從鏈接這個層次來作初始的響應式編程支持的,如今只支持Lettuce,由於它是惟一個支持響應式數據操做的Redis驅動。由於Redis通常用在很是低的抽象級別的,因此在如今這個版本上響應式編程的抽象是都是比較低級的接口的抽象。LettuceConnectionFactory容許依次訪問ReactiveRedisConnection鏈接,並依次提供Redis的響應式的命令。編程

以響應式編程的風格,使用操做方法的函數鏈來建立鏈條去操做Redis中的數據,並且,全部I / O都是異步的。數組

ReactiveKeyCommands keyCommands =connection.keyCommands(); keyCommands.randomKey()dom

.flatMap(keyCommands::type) 異步

.flatMap(System.out::println) 函數

.subscribe();spa

以上代碼獲取隨機密鑰並打印了它的數據類型。不存在的隨機密鑰會輸出爲空Mono。code

響應式Redis命令有兩種形式:接受普通參數和接受命令發佈者。命令發佈者發出特定的Redis命令以將數據直接傳輸到Redis。執行命令後,每一個發出的命令都會發出命令響應。接口

public interface ReactiveStringCommands {資源

Mono<Boolean> set(ByteBuffer key, ByteBuffer value);                               Flux<BooleanResponse<SetCommand>> set(Publisher<SetCommand> commands);

}

傳統的Spring Data Redis byte[]在其阻塞API上用於交換數據的。若是數據是在一個buffer(如ByteBuffer或Netty中的ByteBuf)中,那麼這個byte[]數組會在buffer中進行強制數據複製。響應式支持頗有不少是關於有效的資源使用,因此spring決定開放出了接收ByteBuffer參數的方法。

———— / END / ————

相關文章
相關標籤/搜索