如何在没有提取的情况下将值存储在Memcache中,如何检入PHP?我不喜欢抓取它,因为我设置的值都是1MB大小,在我获取它之后,我没有用它,所以我浪费资源.我在脚本中使用它来检查某些键是否缓存在memcache中,如果没有,它会从慢速数据源读取它们并将它们设置在memcache中.
编辑:如果我使用Memcached::append
附加NULL
到我正在检查的密钥怎么办?TRUE
成功或FALSE
失败时的退货.如果密钥不存在,Memcached::getResultCode
则返回Memcached::RES_NOTSTORED
.这样我检查密钥是否存在,它应该把密钥放在LRU列表的顶部吗?
谢谢.
我想知道为什么Memcached没有特殊的方法.以下是我在考虑之后得出的结论:
function has($key)
{
$m->get($key)
return \Memcached::RES_NOTFOUND !== $m->getResultCode();
}
Run Code Online (Sandbox Code Playgroud)
我不确定这对你有什么帮助,但你可以使用
Memcache::add ( string $key , mixed $var)
Run Code Online (Sandbox Code Playgroud)
如果密钥已存在,它将返回false.
如果返回true,您可以使用
Memcache::delete ( string $key)
Run Code Online (Sandbox Code Playgroud)
删除刚刚设置的密钥.这样您就不需要获取数据了.
基本上你想要做的就是用你的数据填充memcached,对吧?
问题是,在不检索值的情况下询问键是否存在并不是很有用。看这个案例场景:
你询问钥匙是否存在,它确实存在。就在您询问之后,该密钥的数据就会从缓存中删除。虽然您的回复说日期在那里,但实际情况是数据不在那里。所以你浪费了时间去问,因为答案与现实不同。
我想你想要做的是询问一个密钥是否存在,然后如果不存在,则用你的数据填充它。为什么不直接填写所有数据呢?顺便说一句,您是否考虑过,当您用数据填充 memcached 时,您可能会驱逐之前插入的键?