Пример #1
0
 /**
  * {@inheritdoc}
  */
 public function add($key, $value, $expire = 0)
 {
     $ttl = $this->ttl($expire);
     /*
      * Negative ttl behavior isn't properly documented & doesn't always
      * appear to treat the value as non-existing. Let's play safe and not
      * even create the value (also saving a request)
      */
     if ($ttl < 0) {
         return true;
     }
     if ($ttl === 0) {
         return $this->client->setnx($key, $value);
     }
     /*
      * I could use Redis 2.6.12-style options array:
      * $this->client->set($key, $value, array('xx', 'ex' => $ttl));
      * However, this one should be pretty fast already, compared to the
      * replace-workaround below.
      */
     $this->client->multi();
     $this->client->setnx($key, $value);
     $this->client->expire($key, $ttl);
     /** @var bool[] $return */
     $return = (array) $this->client->exec();
     return !in_array(false, $return);
 }