windwork/cache
Composer 安装命令:
composer require windwork/cache
包简介
Windwork cache component
README 文档
README
服务器端缓存是将程序需要频繁访问的网络内容存放在本地文件或缓存服务器中,缓存过期前直接从缓存中读取内容,以提高访问速度。 如频繁访问但不经常更新的一些数据库查询、微信接口令牌等。
Windwork 缓存组件提供简易健壮的缓存组件,5分钟即可完全掌握。 目前支持文件缓存、Memcache、Memcached、Redis缓存存储。
安装
该组件已包含在Windwork框架中,如果你已安装Windwork框架则可以直接使用。
- 安装方式一:通过composer安装(推荐)
composer require windwork/wf
- 安装方式二:传统方式安装
下载源码后,解压源码到项目文件夹中,然后require_once $PATH_TO_WF/core/lib/Loader.php文件,即可自动加载组件中的类。
缓存读写
默认使用文件缓存
// 缓存参数
$cfg = [
'enabled' => 1, // 是否启用缓存
'dir' => 'data/cache', // 缓存文件夹,如果使用缓存服务器,则是缓存变量的前缀
'expire' => 3600, // 缓存更新周期(默认:3600s)
'compress' => 0, // 是否启用缓存内容压缩后存贮
'class' => 'File', // 缓存模式,File)文件缓存;Memcache)使用Memcache缓存;Memcached)使用Memcached缓存;Redis)使用Redis缓存
];
$class = "\\wf\\cache\\adapter\\{$cfg['class']}";
$cache = new $class($cfg);
// 从缓存读取数据
if(null === ($ret = $cache->read('cache/key'))) {
// 缓存中无数据则初始化并写入缓存,下次就可以直接从缓存中获取
$ret = '缓存内容'; // 可以是标量或数组内容,不能是资源类型
$cache->write('cache/key', $ret);
}
// 在这里使用缓存过的$ret变量
删除缓存内容
// 删除一条缓存
$cache->delete('cache/key');
// 清空全部缓存
$cache->clear();
// 通过前缀清空缓存
$cache->clear('user/info'); // 清空所有以 'user/info/' 开头的缓存内容
使用memcache/memcached缓存
// Memcache
$cfg = [
'enabled' => 1, // 是否启用缓存
'dir' => 'data/cache', // 缓存文件夹,如果使用缓存服务器,则是缓存变量的前缀
'expire' => 3600, // 缓存更新周期(默认:3600s)
'compress' => 0, // 是否启用缓存内容压缩后存贮
'class' => '\\wf\\cache\\adapter\\Memcache', // 缓存模式,File)文件缓存;Memcache)使用Memcache缓存;Memcached)使用Memcached缓存;Redis)使用Redis缓存
['memcache'] => [
'host' => '127.0.0.1', //
'port' => 11211, //
'pconnect' => 1, //
'timeout' => 1, // 超时时间(秒)
],
];
$class = "\\wf\\cache\\adapter\\{$cfg['class']}";
$cache = new $class($cfg);
// Memcached
$cfg = [
'enabled' => 1, // 是否启用缓存
'dir' => 'data/cache', // 缓存文件夹,如果使用缓存服务器,则是缓存变量的前缀
'expire' => 3600, // 缓存更新周期(默认:3600s)
'compress' => 0, // 是否启用缓存内容压缩后存贮
'class' => '\\wf\\cache\\adapter\\Memcached', // 缓存模式,File)文件缓存;Memcache)使用Memcache缓存;Memcached)使用Memcached缓存;Redis)使用Redis缓存
['memcached'] => [
'host' => '127.0.0.1', //
'port' => 11211, //
'pconnect' => 1, //
'timeout' => 1, // 超时时间(秒)
],
];
$class = "\\wf\\cache\\adapter\\{$cfg['class']}";
$cache = new $class($cfg);
使用Redis缓存
使用phpredis扩展进行操作 https://github.com/phpredis/phpredis
Windows php_redis.dll 模块下载(根据你的PHP版本选择下载) http://windows.php.net/downloads/pecl/snaps/redis/
$cfg = [
'enabled' => 1, // 是否启用缓存
'dir' => 'data/cache', // 缓存文件夹,如果使用缓存服务器,则是缓存变量的前缀
'expire' => 3600, // 缓存更新周期(默认:3600s)
'compress' => 0, // 是否启用缓存内容压缩后存贮
'class' => 'Redis', // 缓存模式,File)文件缓存;Memcache)使用Memcache缓存;Redis)使用Redis缓存
'redis' => [
'host' => '127.0.0.1', //
'port' => 6379, //
'pconnect' => 1, //
'password' => '', // redis密码,不需要密码验证则留空
'timeout' => 0, // 超时时间(秒),0为不限
],
];
$class = "\\wf\\cache\\adapter\\{$cfg['class']}";
$cache = new $class($cfg);
在Windwork中使用缓存组件
在Windwork项目中设置好缓存配置后,使用cache()函数访问缓存对象实例。
1、在配置文件 config/app.php中设置缓存配置(默认使用文件缓存)
// config/app.php
return [
// 缓存组件设置
'cache' => [
'enabled' => 1, // 是否启用缓存
'class' => 'File', // 缓存模式,File|Memcache|Memcached|Redis
'dir' => dirname(__DIR__) . '/data/cache', // 缓存文件夹
'expire' => 7200, // 缓存更新周期(默认:7200s)
'compress' => 0, // 是否启用缓存内容压缩后存贮(建议只在虚拟主机中使用文件缓存时启用,以便省出存储空间)
// redis
'redis' => [
'host' => '127.0.0.1', //
'port' => 6379, //
'pconnect' => 1, //
'timeout' => 0, // 超时时间(秒),0为不限
],
// memcache
'memcache' => [
'host' => '127.0.0.1', //
'port' => 11211, //
'pconnect' => 1, //
'timeout' => 1, // 超时时间(秒),0为不限
],
// memcached
'memcached' => [
'host' => '127.0.0.1', //
'port' => 11211, //
'pconnect' => 1, //
'timeout' => 1, // 超时时间(秒),0为不限
],
],
];
2、使用缓存组件
// 读取
cache()->read('some/var/data');
// 写入
cache()->write('some/scalar/data/key', 'some data');
cache()->write('some/array/data/key', ['some data 1', 'some data 2']);
// 删除'some/scalar/data/key'缓存
cache()->delete('some/scalar/data/key');
// 清除some/*缓存
cache()->clear('some');
// 清除全部缓存
cache()->clear();
要了解更多?
windwork/cache 适用场景与选型建议
windwork/cache 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 84 次下载、GitHub Stars 达 0, 最近一次更新时间为 2017 年 05 月 11 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「redis」 「performance」 「memcache」 「cache」 「caching」 「memcached」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 windwork/cache 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 windwork/cache 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 windwork/cache 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
g4 application profiler package
CSS/Javascript Minificator, Compressor and Concatenator for TYPO3 - highly configurable frontend asset optimization for CSS/JS merging, minification and compression with optional body parsing, async/defer loading, inline output, data-ignore exclusions, SRI integrity validation/calculation, external
Simple to use mutex implementation that can use flock, memcache, memcached, mysql or redis for locking
WordPress mu-plugin to remove jQuery Migrate from the list of jQuery dependencies and to allow jQuery to enqueue before </body> instead of in the <head>.
Microservice RPC through message queues.
Graphic stand-alone administration for memcached to monitor and debug purpose
统计信息
- 总下载量: 84
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 10
- 依赖项目数: 2
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2017-05-11