Vagrant에 redis를 설치하고 FuelPHP에서 cache 사용
구축할 환경
참고: 마지막
지난번 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 에 액세스 하면, 다음과 같은 결과가 됩니다.
요약
지금까지 Redis 설치에서 FuelPHP로 작업하는 방법을 조금 시도했습니다. 매우 쉽게 시도 할 수있었습니다. 특히 위화감 없이 이용할 수 있는 것이 정말로 믿음직한 곳입니다.
프로덕션에서 사용할 때는 서비스 규모에 따라 다르지만 AWS의 ElasticCache( ElastiCache의 Redis 클러스터에 백업 및 복원 기능 추가 )를 사용하는 것일까요?
cache 의 설계와 이용을 효율적으로 실시해, 서비스의 퍼포먼스를 향상시키고 싶네요.
Reference
이 문제에 관하여(Vagrant에 redis를 설치하고 FuelPHP에서 cache 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hmukaida/items/52cb51f07fe782ec1a10
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Vagrant에 redis를 설치하고 FuelPHP에서 cache 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hmukaida/items/52cb51f07fe782ec1a10텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)