0

此集成测试使用 ReactiveRedisTemplate 列表操作来:

  1. 使用 ReactiveRedisTemplate 列表操作 leftPushAll() 将 List 推送到缓存

  2. 使用 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 的配置属性?

谢谢,理想情况下,我希望更好地控制这些对象在缓存中的保留时间。

4

0 回答 0