此集成测试使用 ReactiveRedisTemplate 列表操作来:
使用 ReactiveRedisTemplate 列表操作 leftPushAll() 将 List 推送到缓存
使用 ReactiveRedisTemplate 列表操作 range() 从缓存中检索列表作为通量,以检索列表中从索引 0 到列表中最后一个索引的所有元素
public void givenList_whenLeftPushAndRange_thenPopCatalog() { //catalog is a List<Catalog> of size 367 Mono<Long> lPush = reactiveListOps.leftPushAll(LIST_NAME, catalog).log("Pushed"); StepVerifier.create(lPush).expectNext(367L).verifyComplete(); Mono<Long> sz = reactiveListOps.size(LIST_NAME); Long listsz = sz.block(); assert listsz != null; Assert.assertEquals(listsz.intValue(), catalog.size()); Flux<Catalog> catalogFlux = reactiveListOps .range(LIST_NAME, 0, listsz) .map( c -> { System.out.println(c.getOffset()); return c; }) .log("Fetched Catalog"); List<Catalog> catalogList = catalogFlux.collectList().block(); assert catalogList != null; Assert.assertEquals(catalogList.size(), catalog.size()); }
这个测试工作正常。我的问题是——存储在缓存中的这些 List 对象的 EXPIRY 和 TTL 是如何控制的?
我问的原因 - 在我的本地 Redis 服务器上,我注意到它们在缓存中保留了几个小时,但是当我对托管在 AWS 上的 Redis 服务器运行此代码时,列表对象似乎只保留在缓存中30分钟。
是否有可用于控制列表对象 TTL 的配置属性?
谢谢,理想情况下,我希望更好地控制这些对象在缓存中的保留时间。