Exemple #1
0
 /**
  * 设置键值
  * @param string $key   键名
  * @param mixed $value  键值
  * @param int $time     过期时间,默认为-1,不设置过期时间;为0则设置为永不过期
  * @return boolean      是否成功
  */
 public function set($key, $value, $time = -1)
 {
     try {
         if ($time > 0) {
             return $this->handler->setex($key, $time, self::setValue($value));
         }
         return $this->handler->set($key, self::setValue($value));
     } catch (RedisException $ex) {
         self::exception($ex);
         //连接状态置为false
         $this->isConnected = false;
     }
     return false;
 }
Exemple #2
0
 /**
  * 设置键值,将自动延迟过期;<br>
  * 此方法用于缓存对过期要求宽松的数据;<br>
  * 使用此方法设置缓存配合getDE方法可以有效防止惊群现象发生
  * @param string $key    键名
  * @param mixed $value   键值
  * @param int $time      过期时间,<=0则设置为永不过期
  * @param int $delayTime 延迟过期时间,如果未设置,则使用配置中的设置
  * @return boolean       是否成功
  */
 public function setDE($key, $value, $time, $delayTime = null)
 {
     try {
         if ($time > 0) {
             $delayTime = $this->getDelayTime($delayTime);
             $ret = $this->handler->multi()->setex($key, $time + $delayTime, self::setValue($value))->setex(self::timeKey($key), $time + $delayTime, self::setValue(['expire_time' => time() + $time + $delayTime, 'delay_time' => $delayTime]))->exec();
             return $ret !== false ? true : false;
         }
         $timeValue = self::getValue($this->handler->get(self::timeKey($key)));
         //已过期或 time<=0 时
         if ($timeValue !== false && (self::isExpiredDE($timeValue) || $time <= 0)) {
             $this->handler->del($key, self::timeKey($key));
         }
         return $this->handler->set($key, self::setValue($value));
     } catch (RedisException $ex) {
         self::exception($ex);
         //连接状态置为false
         $this->isConnected = false;
     }
     return false;
 }