Skip to content

Commit

Permalink
增加README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
garymengcom committed May 30, 2018
1 parent 07bc72e commit cdc5184
Show file tree
Hide file tree
Showing 2 changed files with 76 additions and 9 deletions.
9 changes: 0 additions & 9 deletions Cache.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,6 @@
*
* @author 歪麦 <[email protected]>
* @link https://www.awaimai.com/
* @example
* 假设现有 app\models\Book 类,并已经继承我们的这个缓存策略类。
* 那么,
* <pre>
* (new Book)->getById(100); // 原始的、不用缓存的调用方式,一般是读取数据库的数据。
* (new Book)->getByIdCache(100); // 使用缓存的调用方式,缓存键名为:app_models_book:getbyid: + md5(参数列表)
* (new Book)->getByIdClean(100); // 删除这个缓存
* (new Book)->getByIdFlush(); // 没有参数。删除 getById() 方法对应的所有缓存,即删除 app_models_book:getbyid:*
* </pre>
*
*/
class Cache
Expand Down
76 changes: 76 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@


## 1 使用方法

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

0 comments on commit cdc5184

Please sign in to comment.