2
Hy guys!我在Predis做了樂觀的鎖定。問題在於,Redis文檔說,當監視的密鑰被修改時,那麼執行返回一個'Null Multi-bulk reply'。 Predis的外觀如何? Sady我沒有找到Pedis的任何有用的文檔(不包括非常基本的教程)。Predis Null批量回復
這裏是我的代碼看起來像此刻:
private function updateUrlMaxProcessingTime($time, $hoursSinceUnixEpoch) {
//Save the key and the field. They can change anytime because of the timestamp.
$key = $this->statisticsConfig->getKeyFromDataName(StatisticsEnum::URL_MAX_PROCESS_TIME, $hoursSinceUnixEpoch);
$field = $this->statisticsConfig->getFieldFromDataName(StatisticsEnum::URL_MAX_PROCESS_TIME, $hoursSinceUnixEpoch);
//Update the max url processing time if necessary.
$this->redis->watch($key);
$val = $this->redis->hget($key, $field);
if ($val < $time) {
$this->redis->multi();
$this->redis->hset($key, $field, $time);
$result = $this->redis->exec();
//TODO: fix this
if ($result != null && $result[0] != null && $result[0] != -1) {
return true;
} else {
return false;
}
} else {
$this->redis->unwatch();
return true;
}
}
我只要它返回false調用該函數。
感謝您的信息!我從現在開始使用multiExec()。 – 2013-03-21 11:50:02