如何使Redis自动处理与Predis的持久连接

时间:2014-03-18 16:31:16

标签: php redis gearman predis

我使用predis与两个Redis实例(主服务器和从服务器)进行交互。 Master主要用于只写,slave用于只读。

我必须使用select Redis函数来切换连接,这很好,但我关注它的性能。我是否应该更好地创建一个单例类并使用它来实例化$this->redis以及select如何保持持久性?

到目前为止,下面是我的代码。我想知道是否可以这样做以提高性能?

$redis = $this->redis;

$tipperKey = str_pad($tipperId, 10, '0', STR_PAD_LEFT);
if ($this->debug) {
  $this->logger->addDebug('tipperKey=' . $tipperKey);
  $this->logger->addDebug("Adding groupId:$groupId to \"groups:$tipperKey\" in db:0");
}

// add groupId to tipper groups set
try {
  $redis->select(0);
  $redis->sadd('groups:' . $tipperKey, $groupId);
} catch (Exception $e) {
  $this->logger->addError("Error adding groupId:$groupId to \"groups:$tipperKey\" in db:0 : " . $e->getMessage());
  return false;
}

$result = $this->getRoundsPlayed($competitionId); // cached (600)
if (!$result) {
  return false;
}

$tk = 'tipper:' . $tipperKey;
try {
  foreach ($result as $row) {
    $i = (int)$row['round_number'];
    if ($this->debug) {
      $this->logger->addDebug('select db:' . $i);
    }
    $redis->select($i);

    $sportId = (int)$row['sport_id'];

BTW,这是针对Gearman Job

0 个答案:

没有答案