在Module中使用缓存
在Module中使用缓存
增加缓存配置
以redis为例
/**
* mysql
*/
$mysql_link = array(
'host' => '127.0.0.1',
'port' => '3306',
'user' => 'root',
'prefix' => 'cp_',
'pass' => '123456',
'charset' => 'utf8',
);
/**
* redis
*/
$redis_link = array(
'host' => '127.0.0.1',
'port' => 6379,
'auth' => '',
'timeout' => 2.5
);
//主库
$db = $mysql_link;
$db['name'] = 'test';
//评论数据库
$comment = $mysql_link;
$comment['name'] = 'test_comment';
//缓存
$cache = $redis_link;
$cache['db'] = 6;
//队列
$queue = $redis_link;
$queue['db'] = 7;
return array(
'mysql' => array(
'db' => $db,
'comment' => $comment,
),
'redis' => array(
'cache' => $cache,
'queue' => $queue,
),
);
我们增加了两个redis配置, 分别用于缓存和队列
redis['cache']
redis['queue']
指定默认Model
Cross\MVC\Module
的构造函数, 接收一个参数用于指定数据库连接类型和名称, 格式如下:
Model类型:配置名称
默认创建的Model实例是mysql:db
, 我们通过构造函数默认创建一个redis
实例, 并连接到redis['cache']
指定的数据库.
namespace modules\web;
use Cross\MVC\Module;
class ApiModule extends Module
{
function __construct()
{
parent::__construct('redis:cache');
}
}
然后在Module方法中, 就可以使用$this->link
来使用redis提供的方法了
使用多个Model
在Module中, 可以方便的创建与其他Model的连接, 只需要调用getModel
方法
$this->getModel('Model类型:配置名称');
下面的例子在构造函数中连接了redis['cache']
, 并赋值给成员变量$cache
namespace modules\web;
use Cross\MVC\Module;
use Redis;
class ApiModule extends Module
{
/**
* @var Redis
*/
protected $cache;
function __construct()
{
parent::__construct();
$this->cache = $this->getModel('redis:cache');
}
}
在时在方法中调用$this->link
是一个mysql的实例, $this->cache
是一个redis的实例