检查 Memcache 中是否存在密钥

2022-08-30 19:15:23

如果一个值存储在Memcache中而不获取它,我如何检查PHP?我不喜欢获取它,因为我设置的值都是1MB的大小,在我获取它之后,我没有用处,所以我浪费了资源。我在一个脚本中使用它,该脚本检查某些键是否缓存在memcache中,如果没有,它会从慢速数据源读取它们并将其设置为memcache。

编辑:如果我使用附加到我正在检查的密钥,该怎么办?成功或失败时返回。如果密钥不存在,将返回。通过这种方式,我检查密钥是否存在,它应该将密钥放在LRU列表的顶部,对吗?Memcached::appendNULLTRUEFALSEMemcached::getResultCodeMemcached::RES_NOTSTORED

谢谢。


答案 1

我不确定这对你是否有任何帮助,但你可以使用

Memcache::add  (  string $key  ,  mixed $var)

如果密钥已存在,它将返回 false。

如果返回 true,您可以使用

Memcache::delete  (  string $key)

以删除您刚刚设置的密钥。这样,您就不需要获取数据。


答案 2

我想知道为什么Memcached没有特殊的方法。以下是我在经过一些考虑后得出的结论:

function has($key)
{
    $m->get($key)

    return \Memcached::RES_NOTFOUND !== $m->getResultCode();
}

推荐