依赖注入缓存 php >= 5.3.0 因为5.3支持匿名函数,项目里有使用匿名函数
采用依赖注入方式实现缓存,易于扩展,只需要继承StoreAbstract
使用igbinary进行高效序列化,gzcompress,zip压缩
提供memcache图形管理
支持file,memcached,redis存储
- 必须安装memcached服务http://memcached.org/
- 安装php pecl memcachedhttp://pecl.php.net/package/memcached,而非memcache扩展
- 安装igbinary可提高memcached性能,libmemcached
- autoload.php 注册自动加载函数,加入项目只需此文件即可
- src/Cache.php 缓存入口类及注册
- src/MCache.php 快捷操作memcache类
- src/CacheContainer.php 依赖注入容器
- src/CacheManager.php 缓存服务管理
- src/StoreAbstract.php 存储抽象类
- src/FileStore 文件存储引擎
- src/MemcacheConnector memcache实例单例对象
- src/MemcacheStore memcache存储引擎
- src/MemcachedConnector memcached实例单例对象
- src/MemcachedStore memcached存储引擎
- src/MemcacheGc memcache垃圾回收机制
- src/RedisConnector redis实例单例对象
- src/RedisStore redis存储引擎
- test/* 提供更多实例
- test/config.php 标准配置文件
- test/memcache-tools.php 提供memcache图形管理
require 'autoload.php';
use SgIoc\Cache\Cache;
Cache::register();
- Cache::get();是默认的缓存对象,可以Cache::store切换不同的引擎
- FCache::get();文件缓存操作
- MCache::get();memcache缓存操作
- DCache::get();memcached缓存操作
- RCache::get();redis缓存操作
- 如RedisStore里没有提供lpush方法,但phpredis扩展里有,只需RCache::lpush(key,value)即可.其它缓存一样支持
- Cache::link();获取默认的引擎实例
- RCache::link('redis');获取redis引擎实例
#普通用法
Cache::put('key', 'data', 10);
#匿名写法
Cache::put('key', function(){
return 'abc';
}, 10);
Cache::get('key');
#普通写法
$data = Cache::remember("key", 10, "data");
#匿名函数写法
$data = Cache::remember("key", 10, function(){
return '1234567890';
});
Cache::forget('key')
Cache::flush()
- Cache::store('memcache')->get('key');
- 系统提供一种快捷操作:
- MCache::get('key') 相当于上面的代码
- Cache::info();
- Cache::store('memcache')->info();
- MCache::info();
require 'autoload.php';
use SgIoc\Cache\Cache;
//缓存配置
$config = array(
'file' => array(//文件存储引擎
'expired' => 7200,//默认存储时间
'path' => __DIR__ . '/storage/',//存储目录,必须可写
'is_zip' => 1,//是否开启压缩
'zip_level' => 6,//压缩等级0~10
),
'memcache' => array(//memcache存储引擎
'host' => '127.0.0.1',//memcache地址
'port' => 11211,//memcache端口
),
);
try {
//注册缓存
Cache::register($config);
//键
$key = 'key-simple';
//值
$str = str_repeat(join(',', range('a', 'z')), 1) . '<br/>' . date('H:i:s');
//判断缓存是否存在
if(!Cache::has($key)) {
//写入缓存
Cache::put($key, $str);
}
//读取缓存
$res = Cache::get($key);
dump($res);
//删除缓存
$bool = Cache::forget($key);
dump($res);
} catch (Exception $ex) {
dump($ex->getMessage());
}
- 常用操作
- 写入缓存 put($key, $value, $minutes)/add($key, $value, $minutes)
- 读取缓存 get($key)/pull($key)
- 判断缓存是否存在 has($key)
- 永久缓存 forever($key, $value)
- 写入&读取 remember($key, $minutes, $value)
- 永久写入&读取 rememberForever($key, $value)
- 递增 increment($key, $step)
- 递减 decrement($key, $step)
- 删除缓存 forget($key)
- 清除所有缓存
- 切换引擎 store($engine)
- MCache MCache::get
- 使用外部配置文件
- 扩展缓存
- 注册独立缓存
- 垃圾回收
- memcache图形管理
- 依赖注入(DI) & 控制反转(IOC)
- 延时静态绑定
- 匿名函数应用
- 抽象 & 继承
- 单例实现
- __callStatic & call_user_func_array