레디스

소개

레디스는 오픈소스이며 고급 key-value 저장소 입니다. 레디스는 키가 문자열, 해쉬, 리스트, 세트, 정렬 세트를 포함할수 있기 때문에 종종 데이터베이스 구조 서버로 지칭됩니다.

노트: 만약 PECL을 통해 설치된 레디스 PHP 익스텐션이 있다면, app/config/app.php 파일의 alias명을 수정해야 합니다.

설정

어플리케이션의 레디스 설정은 app/config/database.php 파일에 있습니다. 이 파일에서 어플리케이션에서 사용하는 레디스 서버를 포함하고 있는 redis 배열을 볼 수 있습니다.:

'redis' => array(

    'cluster' => true,

    'default' => array('host' => '127.0.0.1', 'port' => 6379),

),

기본으로 설정되어 있는 서버로 개발을 하기에 충분 합니다. 그러나, 개발 환경에 따라 이 배열을 수정 할 수 있습니다. 간단히 레디스 서버의 이름을 지정하고 호스트와 포트를 명시하면 됩니다.

클러스터 옵션은 라라벨 Redis에서 클라이언트 사이드 샤딩을 수행하도록 합니다. 이는 여러 레디스 노드 연결을 관리하여 더 많은 메모리를 사용할 수 있도록 합니다. 하지만, 주의 할 점은 클라이언트 사이드 샤딩은 페일오버에 대응하지 않는 다는 것입니다; 그러므로 다른 주 저장소에서 가져올 수 있는 데이터를 캐싱하는 것이 좋습니다.

만약 레디스 서버에 인증이 필요하다면, 레디스 서버 설정 배열에 password 키 / 값 쌍을 추가하여 제공할 수 있습니다.

사용법

Redis::connection 메소드를 호출하여 레디스 인스턴스를 얻을 수 있습니다.:

$redis = Redis::connection();

이 구문은 기본 레디스 서버 인스턴스를 제공합니다. 레디스 설정에 명시된 서버를 연결하려면 connection 메소드에 서버 이름을 전달하면 됩니다.:

$redis = Redis::connection('other');

레디스 클라이언트 인스턴스가 연결되었다면 어떠한 레디스 커맨드도 레디스 인스턴스에 발행할 수 있습니다. Laravel은 매직 메소드를 사용하여 레디스 서버에 커맨드를 전달 합니다.:

$redis->set('name', 'Taylor');

$name = $redis->get('name');

$values = $redis->lrange('names', 5, 10);

커맨드의 매개 변수는 단순히 매직 메소드에 전달됩니다. 물론 꼭 매직 메소드를 사용해야 하는 것은 아닙니다. command 메소드를 사용하여 커맨드를 서버에 전달 할 수 있습니다.:

$values = $redis->command('lrange', array(5, 10));

기본 커넥션에 커맨드를 실행하는 거라면, 그냥 Redis 클래스의 static 매직 메소드를 사용하세요.

Redis::set('name', 'Taylor');

$name = Redis::get('name');

$values = Redis::lrange('names', 5, 10);

노트: 레디스 캐시세션 드라이버는 Laravel에 이미 포함되어 있습니다.

파이프라인 기법

파이프라인 기법은 한번의 연산에 많은 커맨드들을 서버로 보낼 때 사용됩니다. 그렇게 하려면, pipeline 커맨드를 사용합니다.:

서버에 많은 커맨드들을 파이핑

Redis::pipeline(function($pipe)
{
    for ($i = 0; $i < 1000; $i++)
    {
        $pipe->set("key:$i", $i);
    }
});

문법오류나 오역, 오타를 이슈에 남겨주시거나 해당 페이지에 코멘트를 달아주시면 확인 후 업데이트 하겠습니다.

comments powered by Disqus