Caching 如何使用;“缓存”;单声道方法

Caching 如何使用;“缓存”;单声道方法,caching,reactive-programming,spring-webflux,project-reactor,webflux,Caching,Reactive Programming,Spring Webflux,Project Reactor,Webflux,我是SpringWebFlux的初学者。在研究过程中,我发现了一些代码,如: Mono result = someMethodThatReturnMono().cache(); “缓存”这个名字告诉我缓存一些东西,但是缓存在哪里以及如何检索缓存的东西?它有点像咖啡因吗?它缓存Flux/Mono前面步骤的结果,直到调用cache()方法为止,请检查此代码的输出以查看其运行情况: import reactor.core.publisher.Mono; 公共类缓存示例{ 公共静态void main(

我是SpringWebFlux的初学者。在研究过程中,我发现了一些代码,如:

Mono result = someMethodThatReturnMono().cache();

“缓存”这个名字告诉我缓存一些东西,但是缓存在哪里以及如何检索缓存的东西?它有点像咖啡因吗?

它缓存Flux/Mono前面步骤的结果,直到调用
cache()
方法为止,请检查此代码的输出以查看其运行情况:

import reactor.core.publisher.Mono;
公共类缓存示例{
公共静态void main(字符串[]args){
var mono=mono.fromCallable(()->{
System.out.println(“开始!”);
返回5;
})
.map(i->{
System.out.println(“Double!”);
返回i*2;
});
var cached=mono.cache();
System.out.println(“使用缓存”);
System.out.println(“1.+cached.block());
System.out.println(“2.+cached.block());
System.out.println(“3.+cached.block());
System.out.println(“使用未缓存”);
System.out.println(“1.+mono.block());
System.out.println(“2.+mono.block());
System.out.println(“3.+mono.block());
}
}
输出:

Using cached
Go!
Double!
1. 10
2. 10
3. 10
Using NOT cached
Go!
Double!
1. 10
Go!
Double!
2. 10
Go!
Double!
3. 10

它将缓存Flux/Mono前面步骤的结果,直到调用
cache()
方法为止,请检查此代码的输出以查看它的运行情况:

import reactor.core.publisher.Mono;
公共类缓存示例{
公共静态void main(字符串[]args){
var mono=mono.fromCallable(()->{
System.out.println(“开始!”);
返回5;
})
.map(i->{
System.out.println(“Double!”);
返回i*2;
});
var cached=mono.cache();
System.out.println(“使用缓存”);
System.out.println(“1.+cached.block());
System.out.println(“2.+cached.block());
System.out.println(“3.+cached.block());
System.out.println(“使用未缓存”);
System.out.println(“1.+mono.block());
System.out.println(“2.+mono.block());
System.out.println(“3.+mono.block());
}
}
输出:

Using cached
Go!
Double!
1. 10
2. 10
3. 10
Using NOT cached
Go!
Double!
1. 10
Go!
Double!
2. 10
Go!
Double!
3. 10

你的单声道是一种rawtype-不要这样做。请阅读文档-每个Mono用户通常会触发新的订阅;调用
cache
时,一旦返回值,相同的值将返回给所有后续订阅服务器。你的单声道是一种rawtype-不要这样做。请阅读文档-每个Mono用户通常会触发新的订阅;调用
cache
时,一旦返回值,相同的值将返回给所有后续订阅服务器。明白了,谢谢明白了,谢谢