我正在使用 Jedis Redis 客户端,希望能够确定某个键是否存在,如果存在则获取该值。我目前正在使用 if 语句来检查键是否存在,如果不存在则返回 null。我假设这不是最好的方法,因为您需要多次访问数据库。有没有办法在获取值的同一步骤中检查键是否存在?
一些示例代码:
try {
if (!jedis.exists(name)) {
return null;
}
return jedis.hgetAll(name);
} catch (JedisConnectionException exception) {
// Do stuff
} finally {
// Clean up
}
Run Code Online (Sandbox Code Playgroud)
对于Redis,如果某个键存在,则关联的值不为空。对于 set、zset、hash、list 是这样,但对于 string 则不然。
例子:
> hmset x id 0
OK
> keys *
1) "x"
> hdel x id
(integer) 1
> keys *
(empty list or set)
Run Code Online (Sandbox Code Playgroud)
在您的情况下,您只需执行 hgetAll 并检查返回是否为空。