/** * 设置指定key的缓存数据 * * $expire_type默认有4种类型,分别为: * * * $expire_type = Cache::TYPE_MAX_AGE 最长时间,当指定的$expire达到时间后,缓存失效,默认方式 * * $expire_type = Cache::TYPE_MAX_HIT 最大命中数,当get()请求数量达到$expire值后,缓存失效 * * $expire_type = Cache::TYPE_ADV_AGE 高级时效类型,此类型时,传入的$expire可以类似:200~250,1/100,其中200~250表示介于这个时间(单位秒)内时,在1/100请求几率下会失效,其它99/100请求不会失效,并且250为临界时间,超过这个时间将等同TYPE_MAX_AGE方式处理。它的主要用途是在高并发的情况下,避免因缓存失效而集中需要更新导致重复加载。 * * $expire_type = Cache::TYPE_ADV_HIT 高级命中类型,此类型基本同上,只是$expire前的数值表示为请求数 * * @example $this->set('key','value','200~250,1/100',Cache::TYPE_RENEW_AGE); 表示介于200~250秒之间时命中率为1/100,若命中则更新缓存 * * @param string/array $key 可以同时设置多个 * @param fixed $value * @param int/string $expire 失效时间或命中数,0表示最大有效时间 * @param string $expire_type 失效类型 * @return boolean 是否成功 */ public function set($key, $value = null, $expire = 3600, $expire_type = null) { if ($expire_type && $expire_type != Cache::TYPE_MAX_AGE) { $this->_check_adv_data($key, $value, $expire, $expire_type); } elseif (strpos($expire, '~') && preg_match('#^([0-9]+)~([0-9]+),([0-9]+)/([0-9]+)$#', $expire, $match_exp)) { $expire = (int) $match_exp[1]; } else { $expire = (int) $expire; } try { return $this->driver->set($key, $value, $expire); } catch (Exception $e) { $this->last_error_msg = $e->getMessage(); $this->last_error_no = $e->getCode(); return false; } }
/** * 设置指定key的缓存数据 * * $expire_type默认有4种类型,分别为: * * * $expire_type = Cacah::TYPE_MAX_AGE 最长时间,当指定的$expire达到时间后,缓存失效,默认方式 * * $expire_type = Cacah::TYPE_MAX_HIT 最大命中数,当get()请求数量达到$expire值后,缓存失效 * * $expire_type = Cacah::TYPE_ADV_AGE 高级时效类型,此类型时,传入的$expire可以类似:200~250,1/100,其中200~250表示介于这个时间(单位秒)内时,在1/100请求几率下会失效,其它99/100请求不会失效,并且250为临界时间,超过这个时间将等同TYPE_MAX_AGE方式处理。它的主要用途是在高并发的情况下,避免因缓存失效而集中需要更新导致重复加载。 * * $expire_type = Cacah::TYPE_ADV_HIT 高级命中类型,此类型基本同上,只是$expire前的数值表示为请求数 * * @example $this->set('key','value','200~250,1/100',Cache::TYPE_RENEW_AGE); 表示介于200~250秒之间时命中率为1/100,若命中则更新缓存 * * @param string/array $key 可以同时设置多个 * @param fixed $value * @param int/string $expire 失效时间或命中数,0表示最大有效时间 * @param string $expire_type 失效类型 * @return boolean 是否成功 */ public function set($key, $value = null, $expire = 3600, $expire_type = null) { if ($this->config['prefix']) { # 加前缀 if (is_array($key)) { $tmpcopy = array(); foreach ($key as $k => $v) { $tmpcopy[$this->config['prefix'] . $k] = $v; } $key = $tmpcopy; } else { $key = $this->config['prefix'] . $key; } } if ($expire_type && $expire_type != Cache::TYPE_MAX_AGE) { $this->_check_adv_data($key, $value, $expire, $expire_type); } elseif (strpos($expire, '~') && preg_match('#^([0-9]+)~([0-9]+),([0-9]+)/([0-9]+)$#', $expire, $match_exp)) { $expire = (int) $match_exp[1]; } else { $expire = (int) $expire; } try { return $this->driver->set($key, $value, $expire); } catch (Exception $e) { return false; } }