即使键有时存在,Redis 也会重新调整 null 值

问题描述 投票:0回答:1

我正在使用启用了集群模式的 AWS Elasticache Redis 集群。 我当前的集群配置有 1 个节点组和组内有 2 个节点。与拥有 1 个主节点和 2 个从节点一样好。

我正在使用 redisTemplate 执行缓存操作,如下所示:

redisTample.execute(new SessionCallback<Void>() {
    @Override
    public Void execute(RedisOperations ops) {
         ops.opsForValue().set(key, Object, TTL, TimeUnit.SECONDS);

         //verify that the key is created or not
         if(Boolean.TRUE.equals(ops.hasKey(key)) { 
             logger.info("Key is present. In slot: {}", redissonClient.getKeys().getSlot(key));
         }
    }
});

执行上述代码后,我会看到日志行 Key is present 和插槽信息。 然后当我尝试检查这个键的值时,该值有时为空!

Object obj = ops.opsForValue().get(key); //obj is null here

注意:它并不总是返回NULL值。 有人可以帮我看看这是怎么回事吗?

我正在尝试将键值添加到redis缓存中,但有时该值会为空。

spring caching redis amazon-elasticache redisson
1个回答
0
投票

这是因为Redis主节点和从节点之间的复制滞后。将 Redisson

readMode
设置为
master

即可解决
© www.soinside.com 2019 - 2024. All rights reserved.