我使用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