项目作者: yezihack

项目描述 :
php注入缓存
高级语言: PHP
项目地址: git://github.com/yezihack/php-ioc-cache.git
创建时间: 2018-03-27T09:58:37Z
项目社区:https://github.com/yezihack/php-ioc-cache

开源协议:Apache License 2.0

下载


php-ico-cache php依赖注入缓存

依赖注入缓存 php >= 5.3.0 因为5.3支持匿名函数,项目里有使用匿名函数

采用依赖注入方式实现缓存,易于扩展,只需要继承StoreAbstract

使用igbinary进行高效序列化,gzcompress,zip压缩

提供memcache图形管理

支持file,memcached,redis存储

条件

更新日志 2018-04-20

更新日志v1.0.9

文件列表

  • 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图形管理

注册缓存

  1. require 'autoload.php';
  2. use SgIoc\Cache\Cache;
  3. 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引擎实例

put 写入缓存,保存时间10分钟,也支持匿名写法

  1. #普通用法
  2. Cache::put('key', 'data', 10);
  3. #匿名写法
  4. Cache::put('key', function(){
  5. return 'abc';
  6. }, 10);

get 获取缓存

Cache::get(‘key’);

remember 写入和获取集成写法,支持匿名函数

  1. #普通写法
  2. $data = Cache::remember("key", 10, "data");
  3. #匿名函数写法
  4. $data = Cache::remember("key", 10, function(){
  5. return '1234567890';
  6. });

forget 删除缓存

Cache::forget(‘key’)

flush 清除所有的缓存

Cache::flush()

切换不同引擎缓存操作

  • Cache::store(‘memcache’)->get(‘key’);
  • 系统提供一种快捷操作:
  • MCache::get(‘key’) 相当于上面的代码

获取当前缓存详情运行情况

  • Cache::info();
  • Cache::store(‘memcache’)->info();
  • MCache::info();

完整实例操作

  1. require 'autoload.php';
  2. use SgIoc\Cache\Cache;
  3. //缓存配置
  4. $config = array(
  5. 'file' => array(//文件存储引擎
  6. 'expired' => 7200,//默认存储时间
  7. 'path' => __DIR__ . '/storage/',//存储目录,必须可写
  8. 'is_zip' => 1,//是否开启压缩
  9. 'zip_level' => 6,//压缩等级0~10
  10. ),
  11. 'memcache' => array(//memcache存储引擎
  12. 'host' => '127.0.0.1',//memcache地址
  13. 'port' => 11211,//memcache端口
  14. ),
  15. );
  16. try {
  17. //注册缓存
  18. Cache::register($config);
  19. //键
  20. $key = 'key-simple';
  21. //值
  22. $str = str_repeat(join(',', range('a', 'z')), 1) . '<br/>' . date('H:i:s');
  23. //判断缓存是否存在
  24. if(!Cache::has($key)) {
  25. //写入缓存
  26. Cache::put($key, $str);
  27. }
  28. //读取缓存
  29. $res = Cache::get($key);
  30. dump($res);
  31. //删除缓存
  32. $bool = Cache::forget($key);
  33. dump($res);
  34. } catch (Exception $ex) {
  35. dump($ex->getMessage());
  36. }

更多实例

知识要点

  • 依赖注入(DI) & 控制反转(IOC)
  • 延时静态绑定
  • 匿名函数应用
  • 抽象 & 继承
  • 单例实现
  • __callStatic & call_user_func_array

图形管理

更多技术支持