我正在使用Jedis Redis客户端,并希望能够确定密钥是否存在,如果存在,那么获取值。我目前正在使用if语句检查密钥是否存在,如果不存在则返回null。我假设这不是最好的做事方式,因为你需要不止一次访问数据库。有没有办法在获取值的同一步骤中检查密钥是否存在?
一些示例代码:
try {
if (!jedis.exists(name)) {
return null;
}
return jedis.hgetAll(name);
} catch (JedisConnectionException exception) {
// Do stuff
} finally {
// Clean up
}
答案 0 :(得分:4)
使用Redis时,如果存在密钥,则关联的值不为空。这适用于set,zset,hash,list,但不适用于string。
示例:
> hmset x id 0
OK
> keys *
1) "x"
> hdel x id
(integer) 1
> keys *
(empty list or set)
在您的情况下,您只需执行hgetAll并检查返回是否为空。