ShopCMS 开发文档
HFramework 开发文档

7.2 缓存

框架目前支持APC缓存、文件缓存、memcache缓存、redis缓存。对于这些缓存技术,框架封装了相同的读写方法,也就是说,当您想更换缓存模式,不需要修改程序,只需要修改配置文件即可。
缓存的配置,请参考主配置文件 有关cache的配置。框架的缓存类位于 framework/extension/cache目录

缓存类是通过入口类的cache()方法实例化的,您可以在任意地方调用。缓存的调用示例:
<?php
$data = H::cache()->getVal('test');//获取 键名为 test 的缓存值
?>
框架的缓存类提供了通用的方法:
/**
 * HFramework 缓存基类
 */
abstract class HCache{
	
	/**
	 * 读取缓存
	 * @param string $key 键名
	 * @return mixed  成功返回string 失败(不存在或者超时等)返回false
	 */
	public function get($key);
	
	/**
	 * 写入缓存
     * @param string $key 缓存键名
	 * @param stirng $value  缓存值
	 * @param $expire 缓存的超时时间(距离当前时间的秒数 ,此值不能超过2592000秒即30天), 默认0,表示永不过期
	 * @return boolen 是否缓存成功
	 */
	public function set($key, $value, $expire=0);
	
	/**
	 * 写入缓存  如果已存在会返回false
     * @param string $key 缓存键名
	 * @param stirng $value  缓存值
	 * @param $expire 缓存的超时时间(距离当前时间的秒数 ,此值不能超过2592000秒即30天), 默认0,表示永不过期
	 * @return boolen 是否缓存成功
	 */
	public function add($key, $value, $expire=0);
	
	/**
	 * 删除缓存
	 * @param string $key 缓存键名
	 * @return boolen 是否删除成功
	 */
	public function delete($key);
	
	/**
	 * 清空所有缓存
	 * @return boolen 是否清空完毕
	 */
	public function clear();
	
	/**
	 * 手动设置键名前缀,防止多网站cache键名混淆
	 * 如果需要多个网站共享cache(文件缓存除外),可在读写cache之前调用此方法,把多个网站的键名前缀设置相同即可共享
	 * @param string $prefix 键名前缀
	 * @return void 无返回值
	 */
	public function setKeyPrefix($prefix)
	
	/**
	 * 获取最后一次使用的KEY
	 * @return string 缓存key名称
	 */
	public function getLastKey()
}

对于部分缓存方式,除了上述方法外,还提供了特定的方法,这些特定的方法的使用,与通用方法完全一样,方法的使用说明您可以参照类文件的注释。
以redis为例,提供的特定方法有:
/**
 * HFramework Redis缓存
 */
class HRedisCache extends HCache{
	/**
	 *  通用方法已省略.....
	 */
	
	/**
	 * 验证指定的键是否存在
	 * @param string $key 键名
	 * @return boolen 成功返回:true;失败返回:false
	 */
	public function exists($key)
	
	/**
	 * 数字递增存储键值键
	 * @param string $key 键名
	 * @param int $num 递增的值
	 * @return boolen 成功返回:true;失败返回:false
	 */
	public function incr($key, $num =1)
	
	/**
	 * 数字递减存储键值键
	 * @param string $key 键名
	 * @param int $num 递减的值
	 * @return boolen 成功返回:true;失败返回:false
	 */
	public function decr($key, $num =1)
	
	/**
	 * 由队列头部添加字符串值
	 * 如果不存在该键则创建该队列。如果该键存在,而且不是一个队列,返回false
	 * @param string $key 队列名
	 * @param mixed $value 队列值
	 * @return mixed 成功返回数组长度,失败false
	 */
	public function lpush($key, $value)
	
	/**
	 * 由队列尾部添加字符串值
	 * 如果不存在该键则创建该队列。如果该键存在,而且不是一个队列,返回false
	 * @param string $key 队列名
	 * @param string $value 队列值
	 * @return mixed 成功返回数组长度,失败false
	 */
	public function rpush($key, $value)
	
	/**
	 * 返回和移除队列的第一个元素
	 * @param string $key 队列名
	 * @return mixed 成功返回第一个元素的值 ,失败返回false
	 */
	public function lpop($key)
	
	/**
	 * 返回的队列的长度
	 * @param string $key 队列名
	 * @return mixed 如果队列不存在或为空,该命令返回0。如果该键不是队列,该命令返回FALSE
	 */
	public function lsize($key)
	
	/**
	 * 返回队列中指定的元素
	 * @param string $key 队列名
	 * @param int $index 队列值,0第一个元素,1第二个… -1最后一个元素,-2的倒数第二…错误的索引或键不指向队列则返回FALSE
	 * @return mixed 成功返回指定的元素,失败false
	 */
	public function lget($key, $index)
	
	/**
	 * 为队列指定的索引赋新的值,若不存在该索引返回false
	 * @param string $key 队列名
	 * @param int $index 队列值,0第一个元素,1第二个… -1最后一个元素,-2的倒数第二…错误的索引或键不指向队列则返回FALSE
	 * @param string $value 队列值
	 * @return boolen 成功返回true,失败false
	 */
	public function lset($key, $index, $value)
	
	/**
	 * 返回在该区域中的指定键队列中开始到结束存储的指定元素
	 * @param string $key 队列名
	 * @param int $start 开始位置,从0开始
	 * @param int $end 结束位置,从0开始
	 * @return mixed 成功返回指定的值 array,失败false
	 */
	public function lgetrange($key, $start, $end)
	}
	
	/**
	 * 删除队列中匹配到的元素
	 * @param string $key 队列名
	 * @param int $count 删除元素的个数 正数表示从左侧开始删除,负数表示从右侧开始删除
	 * @param string $value 匹配字符串
	 * @return int 已删除元素的数量
	 */
	public function lrem($key, $count, $value)
}
关键词:php缓存 memcache apc缓存 redis 缓存重写
阅读:1118 | 发布时间:01-02 14:29