
Vagrant에 redis를 설치하고 FuelPHP에서 cache 사용
지난번 FuelPHP에서 Welcome 페이지 참조까지 했습니다. 이번은, cache 기구에 Redis 를 사용해 보고 싶었으므로, 기본적인 것입니다만, MacBookAir 의 Vagrant 내에서 검증해 보았습니다.
구축할 환경
OSX 10.9.5 Vagrant CentOS 6.5 FuelPHP 1.7.2 Redis server 2.4.10 Redis-cli 2.4.10
참고: 마지막
Controller
app/classes/controller/redis.php
View
app/views/cache/redis.php
사용할 클래스
app/classes/object.php
app/classes/controller/redis.php
app/views/cache/redis.php
app/classes/object.php
이것으로 준비 완료입니다.
FuelPHP에서 cache 세트 및 확인
Controller
app/classes/controller/redis2.php
app/classes/controller/redis2.php
캐시를 검색할 수 없는 경우 CacheNotFoundException Exception이 발급되므로 여기에서 추가 처리를 수행합니다.
이 상태에서 htp://192.168.33.01/레오 s2에 액세스하면 이전과 같은 결과가 표시됩니다.
이제 한 번 Redis의 내용을 지웁시다.
그리고 다시 htp://192.168.33.01/레오 s2 에 액세스 하면 다음과 같은 결과가 됩니다.

요약
구축할 환경
참고: 마지막
지난번 Welcome 페이지까지 설정한 환경의 연속으로 실행하고 있습니다.
Mac에서 Vagrant를 사용하여 CentOS에 FuelPHP 설정
참고:Redis 주위
Redis의 설치와 조작은 아래를 참고로 했습니다.
CentOS-6.5로 redis 서버 구축
FuelPHP 캐시 라이브러리 – redis
참고: 일본어 FuelPHP 문서
Cache
Redis
우선 Redis 설치
vagrant 내에서의 커멘드이므로, 모두 [vagrant]로서 커멘드 라인을 표현하고 있습니다.
[vagrant] yum --enablerepo=epel install redis
...
...
Complete!
특히 위화감없이 설치되었습니다.
이제 Redis 서버를 시작합니다.
[vagrant] /etc/init.d/redis start
Starting redis-server: [ OK ]
다음으로 버전을 확인해 보겠습니다. 우선은 server 의 버젼.
[vagrant] redis-server -v
Redis server version 2.4.10 (00000000:0)
다음으로 client 버전
[vagrant] redis-cli -v
redis-cli 2.4.10
다음으로 동작 확인을 합니다. client를 시작하고 간단하게 확인합니다.
[vagrant] redis-cli
redis 127.0.0.1:6379>
redis 127.0.0.1:6379> set hoge 'foo'
OK
redis 127.0.0.1:6379> get hoge
"foo"
설정한 데이터를 얻을 수 있기 때문에 문제 없을 것 같습니다.
일단 설정한 데이터를 모두 클리어해 둡시다.
[vagrant] redis-cli
redis 127.0.0.1:6379> flushall
OK
redis 127.0.0.1:6379> get hoge
(nil)
이것으로 클리어가 완료되었습니다.
FuelPHP 준비
다음 파일을 준비합니다.
Redis의 설치와 조작은 아래를 참고로 했습니다.
CentOS-6.5로 redis 서버 구축
FuelPHP 캐시 라이브러리 – redis
참고: 일본어 FuelPHP 문서
Cache
Redis
우선 Redis 설치
vagrant 내에서의 커멘드이므로, 모두 [vagrant]로서 커멘드 라인을 표현하고 있습니다.
[vagrant] yum --enablerepo=epel install redis
...
...
Complete!
특히 위화감없이 설치되었습니다.
이제 Redis 서버를 시작합니다.
[vagrant] /etc/init.d/redis start
Starting redis-server: [ OK ]
다음으로 버전을 확인해 보겠습니다. 우선은 server 의 버젼.
[vagrant] redis-server -v
Redis server version 2.4.10 (00000000:0)
다음으로 client 버전
[vagrant] redis-cli -v
redis-cli 2.4.10
다음으로 동작 확인을 합니다. client를 시작하고 간단하게 확인합니다.
[vagrant] redis-cli
redis 127.0.0.1:6379>
redis 127.0.0.1:6379> set hoge 'foo'
OK
redis 127.0.0.1:6379> get hoge
"foo"
설정한 데이터를 얻을 수 있기 때문에 문제 없을 것 같습니다.
일단 설정한 데이터를 모두 클리어해 둡시다.
[vagrant] redis-cli
redis 127.0.0.1:6379> flushall
OK
redis 127.0.0.1:6379> get hoge
(nil)
이것으로 클리어가 완료되었습니다.
FuelPHP 준비
다음 파일을 준비합니다.
vagrant 내에서의 커멘드이므로, 모두 [vagrant]로서 커멘드 라인을 표현하고 있습니다.
[vagrant] yum --enablerepo=epel install redis
...
...
Complete!
특히 위화감없이 설치되었습니다.
이제 Redis 서버를 시작합니다.
[vagrant] /etc/init.d/redis start
Starting redis-server: [ OK ]
다음으로 버전을 확인해 보겠습니다. 우선은 server 의 버젼.
[vagrant] redis-server -v
Redis server version 2.4.10 (00000000:0)
다음으로 client 버전
[vagrant] redis-cli -v
redis-cli 2.4.10
다음으로 동작 확인을 합니다. client를 시작하고 간단하게 확인합니다.
[vagrant] redis-cli
redis 127.0.0.1:6379>
redis 127.0.0.1:6379> set hoge 'foo'
OK
redis 127.0.0.1:6379> get hoge
"foo"
설정한 데이터를 얻을 수 있기 때문에 문제 없을 것 같습니다.
일단 설정한 데이터를 모두 클리어해 둡시다.
[vagrant] redis-cli
redis 127.0.0.1:6379> flushall
OK
redis 127.0.0.1:6379> get hoge
(nil)
이것으로 클리어가 완료되었습니다.
FuelPHP 준비
다음 파일을 준비합니다.
app/classes/controller/redis.php
<?php
class Controller_Redis extends \Fuel\Core\Controller
{
public function action_index()
{
// string
Cache::set('string', 'cache test' . Date::time());
$data['string'] = Cache::get('string');
// Array
$arr = array(
1,
2,
array(
'key' => 'value',
'key2' => 'value2',
'time' => Date::time(),
)
);
Cache::set('array', $arr);
$data['array'] = Cache::get('array');
// Object
$obj = new Object();
Cache::set('object', $obj);
$data['object'] = Cache::get('object');
return Response::forge(View::forge('cache/redis', $data));
}
}
app/views/cache/redis.php
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Cache: Redis</title>
</head>
<body>
<p>Cache: Redis</p>
<div>String:<?php var_export($string) ?></div>
<div>Array :<?php var_export($array) ?></div>
<div>Class :<?php var_export($object) ?></div>
</body>
</html>
app/classes/object.php
<?php
class Object
{
public static function _init()
{
}
public function __toString()
{
return 'Object';
}
}
이것으로 준비 완료입니다.
FuelPHP에서 cache 세트 및 확인
그렇다면 방문해 보겠습니다. htp://192.168.33.01/레오s (IP는 vagrant의 각자 설정을 따릅니다.)

세트한 String, Array, Object 가 표시되고 있으면 성공입니다.
Redis cache를 지우고 cache 만 참조
여기서 cache에 액세스할 수 없는 경우를 살펴보겠습니다. 다음 파일을 준비합니다.
여기서 cache에 액세스할 수 없는 경우를 살펴보겠습니다. 다음 파일을 준비합니다.
app/classes/controller/redis2.php
<?php
class Controller_Redis2 extends \Fuel\Core\Controller
{
public function action_index()
{
try{
$data['string'] = Cache::get('string');
}
catch (\CacheNotFoundException $e) {
$data['string'] = 'none string';
}
try{
$data['array'] = Cache::get('array');
}
catch (\CacheNotFoundException $e) {
$data['array'] = 'none array';
}
try{
$data['object'] = Cache::get('object');
}
catch (\CacheNotFoundException $e) {
$data['object'] = 'none object';
}
return Response::forge(View::forge('cache/redis', $data));
}
}
캐시를 검색할 수 없는 경우 CacheNotFoundException Exception이 발급되므로 여기에서 추가 처리를 수행합니다.
이 상태에서 htp://192.168.33.01/레오 s2에 액세스하면 이전과 같은 결과가 표시됩니다.
이제 한 번 Redis의 내용을 지웁시다.
[vagrant] redis-cli
redis 127.0.0.1:6379> flushall
OK
redis 127.0.0.1:6379> get hoge
(nil)
그리고 다시 htp://192.168.33.01/레오 s2 에 액세스 하면 다음과 같은 결과가 됩니다.
