我正试图找到一种方法来阻止memcache中的特定键 写入一段特定的时间,例如5分钟。
我可以想象做下面的事情,但需要额外的 每个“集合”都“得到”
function lock($key,$expiration) {
memcache::set($key,'DONTUSEME', $expiration);
}
function set_key($key,$val) {
if(memcache::get($key) == 'DONETUSEME') {
# no-op
} else {
memcache::set($key,$val);
}
}
function get_key($key) {
$val = memcache::get($key);
if($val == 'DONTUSEME') {
return '';
} else {
return $val;
}
}
答案 0 :(得分:1)
Memcached不允许您锁定密钥。您可能会查看Couchbase,因为它确实有“get and lock”命令并使用与memcached相同的协议。 Couchbase是一个数据库,但它在顶部包含一个memcached缓存层。如果您想尝试此解决方案,我可以提供更多详细信息。可能还有其他缓存解决方案确实实现了锁定命令,但我无法想到任何问题。
答案 1 :(得分:0)
一年后 - memcache似乎无法做到这一点。
Redis通过SETNX肯定具有锁定功能。性能方面,Redis与Memcache竞争激烈。
http://redis.io/commands/setnx
SETNX键值
如果密钥不存在,则设置密钥以保存字符串值。在这种情况下,它等于SET。当键已经存在值时,不执行任何操作。 SETNX是“SET,如果没有X的话。”