我正在使用启用了集群模式的 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缓存中,但有时该值会为空。
这是因为Redis主节点和从节点之间的复制滞后。将 Redisson
readMode
设置为 master
即可解决