コード例 #1
0
ファイル: RedisConnector.php プロジェクト: eugef/phpredexpert
 /**
  * @param RedisKey $key
  * @return boolean
  */
 public function createKey(RedisKey $key)
 {
     $result = false;
     switch ($key->getType()) {
         case static::$KEY_TYPES[\Redis::REDIS_STRING]:
             $result = $this->db->setnx($key->getName(), $key->getValue('value', ''));
             break;
         case static::$KEY_TYPES[\Redis::REDIS_HASH]:
             if ($key->hasValue('field')) {
                 $result = $this->db->hsetnx($key->getName(), $key->getValue('field'), $key->getValue('value', ''));
             }
             break;
         case static::$KEY_TYPES[\Redis::REDIS_LIST]:
             if ($key->hasValue('value')) {
                 switch ($key->getValue('action')) {
                     case 'prepend':
                         $result = $this->db->lpush($key->getName(), $key->getValue('value'));
                         break;
                     case 'append':
                     default:
                         $result = $this->db->rpush($key->getName(), $key->getValue('value'));
                 }
             }
             break;
         case static::$KEY_TYPES[\Redis::REDIS_SET]:
             $result = $this->db->sadd($key->getName(), $key->getValue('value', ''));
             break;
         case static::$KEY_TYPES[\Redis::REDIS_ZSET]:
             if ($key->hasValue('value')) {
                 $result = $this->db->zadd($key->getName(), (double) $key->getValue('score', 0), $key->getValue('value'));
             }
             break;
     }
     if ($result) {
         // Add TTL if key was created
         if ($key->getTtl() > 0) {
             $this->db->expire($key->getName(), $key->getTtl());
         }
     }
     return $result;
 }
コード例 #2
0
ファイル: KeysController.php プロジェクト: eugef/phpredexpert
 /**
  * Delete key value(s).
  *
  * @Post("/server/{serverId}/db/{dbId}/keys/values/delete",
  *      requirements = {"serverId": "\d+", "dbId": "\d+"}
  * )
  * @RequestParam(name="name", requirements=".+")
  * @RequestParam(name="type", requirements=".+")
  * @RequestParam(name="value", array=true)
  * @ParamConverter("key", converter="fos_rest.request_body", class="Eugef\PhpRedExpert\ApiBundle\Model\RedisKey")
  * @View()
  *
  * @param integer $serverId
  * @param integer $dbId
  * @param RedisKey $key
  * @throws HttpException
  * @return array
  */
 public function deleteKeyValuesAction($serverId, $dbId, RedisKey $key)
 {
     $this->initialize($serverId, $dbId);
     if (!$key->validName()) {
         throw new HttpException(400, 'Key name is not specified');
     }
     if (!$key->validType()) {
         throw new HttpException(400, 'Key type is invalid');
     }
     if (!$key->hasValue('delete')) {
         throw new HttpException(400, 'Key values to be deleted are not specified');
     }
     $result = $this->redis->deleteKeyValues($key);
     if ($result === false) {
         throw new HttpException(404, 'Key values are not deleted');
     }
     return array('key' => $this->redis->getKey($key->getName()));
 }