/** * Looks up pickup details in cache. * * Performance: O(1) time complexity (constant time) * * @param $shipmentID * @return bool|PickupRequest returns false if pickup request doesn't exist in the cache, * otherwise it returns a PickupRequest model instance containing request details */ public function lookupPickupRequest($shipmentID) { $shipmentID = intval($shipmentID); if (!is_int($shipmentID)) { throw new InvalidArgumentException("lookupPickupRequest expects shipment id to be an integer. Input was: {$shipmentID}"); } if (!$this->client->exists(self::pickupRequestPath($shipmentID))) { return false; } //O(1) time complexity $values = $this->client->hmget(self::pickupRequestPath($shipmentID), PickupRequest::$PICKUP_REQUEST_ATTRIBUTE_KEYS); return PickupRequest::fromValues($shipmentID, $values); }