library cache
General redis and memcache class
yeszao/cache
General redis and memcache class
- Wednesday, May 30, 2018
- by yeszao
- Repository
- 1 Watchers
- 1 Stars
- 8 Installations
- PHP
- 0 Dependents
- 0 Suggesters
- 0 Forks
- 0 Open issues
- 2 Versions
- 0 % Grown
1 使用方法
-
使用composer下载 yeszao/cache 组件:, (*1)
composer install yeszao/cache
-
在MVC框架Model
层或者Service
层的基类添加__call()
方法,例如:, (*2)
namespace app\models;
use yeszao\cache;
class Base
{
public function __call($name, $arguments)
{
$redis = new \Redis();
$redis->connect('redis');
// ***主要是这一行***
return (new Cache($redis))->get($this, $name, $arguments);
}
}
其中,yeszao\cache\Cache
对象创建时必须传入 Redis 连接句柄,
然后再通过get
方法获取缓存。, (*3)
-
让子类继承Base
类,例如:, (*4)
namespace app\models;
use app\models\Base;
class Book extends Base
{
public function getById($id)
{
return ['id' => 100, 'title' => 'PHP documents']
}
}
- 然后就可以在
Controllers
类或其他Model
类中使用:
(new Book)->getById(100); // 原始的、不用缓存的调用方式,一般是读取数据库的数据。
(new Book)->getByIdCache(100); // 使用缓存的调用方式,缓存键名为:app_models_book:getbyid: + md5(参数列表)
(new Book)->getByIdClear(100); // 删除这个缓存
(new Book)->getByIdFlush(); // 删除 getById() 方法对应的所有缓存,即删除 app_models_book:getbyid:*。这个方法不需要参数。
2 构造函数参数
yeszao\cache\Cache
构造函数参数:
- $redis
: 必须。Redis连接对象。
- $config
: 可选。缓存的一些配置。
- $config['prefix']
: 缓存键名前缀,默认空字符串。
- $config['expire']
:缓存过期时间,默认3600
秒。
- $config['emptyExpire']
:原函数返回空值是的缓存过期时间,默认10
秒。, (*5)
3. 方法
除了构造函数,主要就是2个方法。, (*6)
3.1 get()
方法
获取缓存,如果未缓存,则调用原对象的原方法,拿到数据后保存到Redis中,并返回数据。
有3个参数,基本就是固定的:
- $object
: 当前调用的类对象,传入$this
。
- $name
: 欲调用的方法名称,由__call
自动获取后传入。
- $arguments
: 欲调用的方法的参数,由__call
自动获取后传入。, (*7)
3.2 expire()
方法
设置缓存过期时间。
默认的缓存过期时间是3600
秒,也可以用expire()
方法动态设置。
只有1个参数:
- $time
: 缓存过期时间,单位为秒。, (*8)