コード例 #1
0
ファイル: RedisConnector.php プロジェクト: eugef/phpredexpert
 /**
  * @param RedisKey $key
  * @return boolean
  */
 public function deleteKeyValues(RedisKey $key)
 {
     $result = false;
     switch ($key->getType()) {
         case static::$KEY_TYPES[\Redis::REDIS_HASH]:
             foreach ($key->getValue('delete') as $keyValue) {
                 $result = $this->db->hdel($key->getName(), $keyValue);
             }
             break;
         case static::$KEY_TYPES[\Redis::REDIS_LIST]:
             foreach ($key->getValue('delete') as $keyIndex) {
                 // workaround to delete list item by index:
                 // http://redis.io/commands/lrem#comment-1375293995
                 $deleteValue = uniqid('phpredexpert-delete-', true);
                 $result = $this->db->multi()->lset($key->getName(), $keyIndex, $deleteValue)->lrem($key->getName(), $deleteValue)->exec();
             }
             // save result of last operation in a transaction
             $result = end($result);
             break;
         case static::$KEY_TYPES[\Redis::REDIS_SET]:
             foreach ($key->getValue('delete') as $keyValue) {
                 $result = $this->db->srem($key->getName(), $keyValue);
             }
             break;
         case static::$KEY_TYPES[\Redis::REDIS_ZSET]:
             foreach ($key->getValue('delete') as $keyValue) {
                 $result = $this->db->zrem($key->getName(), $keyValue);
             }
             break;
     }
     return $result;
 }