0

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;
   }
}
4

2 に答える 2

0

1年後-memcacheはこれを行うことができないようです。

Redis には、SETNX を介したロック機能があります。Redis は、パフォーマンスの点で Memcache と競合します。

http://redis.io/commands/setnx

SETNX キー値

キーが存在しない場合は、文字列値を保持するようにキーを設定します。その場合、SET と同じです。キーがすでに値を保持している場合、操作は実行されません。SETNX は、"SET if N o e Xists.

于 2015-01-19T05:50:59.010 に答える