/** * @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; }