直连DB是不够的,很快数据库访问就会成为系统的瓶颈。我们引入缓存Redis。还是一样的思路,先让系统跑起来。
一、安装启动Redis##
- 安装
$ wget http://download.redis.io/releases/redis-3.0.1.tar.gz
$ tar xzf redis-3.0.1.tar.gz
$ cd redis-3.0.1
$ make
- 启动
$ src/redis-server
二、安装PHP PRedis##
PRedis是PHP访问redis的扩展包,只需要下载原码即可,不需要安装PHP扩展(如php-redis.so)。但在这之前要介绍一个composer,因为laravel通过它来安装第三方程序包(管理依赖关系)。
- cd 到你的App所在路径,修改composer.json,在require字段里,添加
"predis/predis":"~1.0.1"
,然后当前目录下 sudo composer update,此时就会自动下载包需要的扩展包,这些扩展包将会被放在vendor目录下。
如果出现内存不够这些报错,现在看来是内存分配不够的原因,重启一下服务器即可,彻底解决的办法要修改服务器配置,但我不清楚改哪里,后续再补
- 配置相关配置,查看官方文档即可。主要是配置
config/database.php
'redis' => array(
'cluster' => false,
'default' => array('host' => '127.0.0.1', 'port' => 6379)
)
三、coding##
<?php namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\User as User;
use Illuminate\Support\Facades\Redis as Redis;
class UserController extends Controller {
// use User;
private $model;
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->model = new User();
}
/**
* Show
*
* @return Response
*/
public function showUser($id)
{
$redis = Redis::connection('default');
$cacheUsers = $redis->get('userList');
if( $cacheUsers ){
$users = $cacheUsers;
print_r($users);
Log::info('获取用户列表,通过redis');
}else{
$users = $this->model->fetchAll();
$redis->set('userList', $users);
print_r($users);
Log::info('获取用户列表,通过msyql');
}
}
}