[TOC]
* * * * *
## 1 文件
tp5的缓存驱动目录thinkphp\library\think\cache\driver\
通过各种缓存机制实现**键值对数据**的缓存
包含以下**12种**
* * * * *
1 Apc.php Apc缓存
2 Db.php 数据库表缓存
3 File.php 带队列文件缓存
4 Lite.php 简单文件缓存
5 Memcache.php Memcache缓存
6 Memcached.php Memecached缓存
7 Redis.php Redis.php缓存
8 Sae.php Sae平台缓存
9 Secache.php Secache缓存
10 Sqlite.php Sqlite缓存
11 Wincache.php Wincache缓存
12 Xcache Xcache缓存
* * * * *
数据库类型
> Db [Redis](http://www.redis.cn/) [Sqlite](http://sqlite.in/)
进程类型
> [Memcache](http://php.net/manual/zh/book.memcache.php) [Memcached](http://php.net/manual/zh/book.memcached.php)
文件类型
> File Lite
php实现
> [Secache](https://github.com/shopex/secache)
扩展实现
> [Apc](http://php.net/apc) [Xcache](http://xcache.lighttpd.net/wiki/XcacheApi)
平台实现
> [Sae](http://www.sinacloud.com/doc/sae/php/memcache.html) [Wincache](http://php.net/manual/en/book.wincache.php)
## 2 缓存驱动
> 1 缓存配置 全局配置文件convention.php
~~~
'cache' => [
'type' => 'File',
'path' => CACHE_PATH,
'prefix' => '',
'expire' => 0,
],
~~~
> 2 缓存初始化 thinkphp\library\think\Cache.php的connect()
~~~
if (!isset(self::$instance[$md5])) {
$type = !empty($options['type']) ? $options['type'] : 'File';
$class = (!empty($options['namespace']) ? $options['namespace'] : '\\think\\cache\\driver\\') . ucwords($type);
unset($options['type']);
self::$instance[$md5] = new $class($options);
APP_DEBUG && Log::record('[ CACHE ] INIT ' . $type . ':' . var_export($options, true), 'info');
}
~~~
分析可知根据缓存配置的type值,选择对应的缓存驱动进行初始
## 3 缓存驱动接口
1 `public function __construct($options = []){}` 缓存初始化接口。
> $options:缓存配置参数
2 `public function get($name){}`
读取缓存接口
> $name:缓存键名
3 `public function set($name, $value, $expire = null){}`
写入缓存接口
> $name:缓存键名
> $value:缓存键值
> $expire:缓存键名前缀
4 `public function rm($name){}`
删除缓存接口
> $name:缓存键名
5 `public function clear(){}`
清空缓存接口
## 4 总结
1 缓存配置
> convention.php
2 缓存初始化
> Cache::connect($options)
3 缓存接口
> 5个public方法
> __construct() get() set() rm() clear()