在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的实例