mzphp CACHE(缓存类)
在 mzphp 框架中缓存类现已支持:
- memcache cache
- file cache
- redis cache
更多缓存引擎正在持续支持中。
缓存类的使用方法:
在 conf/conf.[ENV].php 配置文件中 开启任意一个缓存引擎:
'cache' => array(
/*
'memcache' => array(
'host' => '127.0.0.1:11211',
'pre' => 'mzphp_',
),
'file' => array(
'dir' => ROOT_PATH.'data/cachexxxxx/',
'pre' => 'mzphp_',
),
'redis' => array(
'host' => '127.0.0.1',
'port' => 19000,
'table' => 'www',
'pre' => 'mzphp_'
),
*/
),
### 多个缓存实例
**原型:**
```php
public static function instance($cache_name){}
调用:
// get default provider
$instance = CACHE::instance();
// get file provider
$file_cache = CACHE::instance('file');
您可以直接调用 CACHE::get($key) ,系统会默认初始化 配置文件中 cache 里的第一个下标的缓存服务器实例。
如果您需要使用 redis 等缓存服务器特殊命令,您可以像以下执行:
// get redis provider
$instance = CACHE::instance('redis');
// call redis lpop
echo $instance->lpop('mzphp');
检测缓存是否开启
file cache 检测目录是否正常读写
memcache 和 redis 检测服务器连接是否正常
原型:
public static function opened() {}
用法:
if(CACHE::opened()){
// todo cache process
}
取得缓存
原型:
public static function get($key) {}
用法:
echo CACHE::get('who');
// memcached multi support
print_r(CACHE::get(array('who', 'are', 'you')));
设置缓存
原型:
public static function set($key, $val, $expire = 0) {}
用法:
if(CACHE::set('who', 'mzphp', 1000)){
echo 'success';
}else{
echo 'failure';
}
更新缓存
原型:
public static function update($key, $val, $expire) {}
用法:
if(CACHE::update('who', 'mzphp', 1000)){
echo 'success';
}else{
echo 'failure';
}
删除缓存
原型:
public static function delete($key) {}
用法:
if(CACHE::delete('who')){
echo 'success';
}else{
echo 'failure';
}
清空一个 CACHE 表
注:该方法在 file cache 中暂不支持。
原型:
public static function truncate($pre = '') {}
用法:
if(CACHE::truncate('')){
echo 'success';
}else{
echo 'failure';
}
开启锁
原型:
public static function lock($key, $expire = 10000, $max_lock_count = 1000, $lock_step_time = 5000) {}
用法:
//lock
if(CACHE::lock('you')){
echo 'success';
}else{
echo 'failure';
}
sleep(rand(10));
// finally
CACHE::unlock('you');
说明:
key:
是指要锁的键名
expire:
是否锁最多在CACHE中存活的时间(毫秒)
max_lock_count :
如果等待超过 max_lock_count(次) 以后,返回读锁失败。
lock_step_time:
当缓存锁住后,另一个进来的锁会 block 住当前进程(循环),
并以每次休眠 $lock_step_time(微秒)的时间来等待锁解开。
并发大时,建议适当改小该参数,提高 max_lock_count。
参数越小,解锁的可能性越大,但是对缓存服务器负载会变高。
解锁
原型:
public static function unlock($key) {}
用法:
请见 CACHE::lock 使用方法。