RxJava- cache()与replay()相同吗?

我想知道是否有一个cache()运算符可以缓存x个数量的排放,但也会在指定的时间间隔(例如1分钟)后使它们到期。 我在寻找像……

 Observable<ImmutableList> cachedList = otherObservable .cache(1, 1, TimeUnit.MINUTES); 

这会缓存一个项目,但会在一分钟后过期并清除缓存。

我做了一些研究,找到了重播算子。 看起来它可以满足这种需求,但我有一些问题。 为什么它很热并且需要连接? 这是否与cache()运算符不同? 我知道cache()模仿主题,但它不需要连接。

cachereplay适用于不同的用例。 缓存是一种自动连接重放 – 通常用于长期重放的所有容器。 重放可以有更多的参数化,可以进行有限的时间/大小重放,但需要开发人员指定何时开始。 autoConnect()运算符允许您将此类ConnectableObservable实例转换为普通的Observable ,一旦订阅者订阅autoConnect()连接到源。 这样,您就可以进行有界和自动连接的重放(需要RxJava 1.0.14+):

 source.replay(1, TimeUnit.SECONDS).autoConnect().subscribe(...);