redis + phpredis 설치 및 php 에서 redis 사용방법 정보
redis + phpredis 설치 및 php 에서 redis 사용방법관련링크
본문
1. redis(레디스)가 뭔가요? 많이 들어는 봤는데…..
레디스(REmote DIctionary Server) 는 메모리기반 key-value store(저장소) 입니다.
redis 는 주로 두가지 용도로 많이 습니다.
1. 데이타(또는 페이지) 캐시
2. 세션 저장소
세션 저장소로 사용할 경우 대용량 분산처리가 가능하며, 서브도메인 세션공유를 쉽게 처리할수 있습니다.
2. redis 설치 및 시작
2.1 centos6.x 에서 redis 설치 (centos7 도 동일)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
[root@vultr ~]# yum install redis ..... Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : redis-3.2.11-1.el6.x86_64 1/1 Verifying : redis-3.2.11-1.el6.x86_64 1/1
Installed: redis.x86_64 0:3.2.11-1.el6
Complete! [root@vultr ~]# #기본실행 서비스에 등록해둡니다. [root@vultr ~]# chkconfig redis on [root@vultr ~]# service redis start Starting redis-server: [ OK ]
# redis-cli 로 정상 접속되는지 확인합니다. [root@vultr ~]# [root@vultr ~]# redis-cli 127.0.0.1:6379> keys * (empty list or set) 127.0.0.1:6379> quit [root@vultr ~]# |
2.2 ubuntu 에서 설치
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
root@vultr:~# sudo apt-get install redis-server Suggested packages: ruby-redis Do you want to continue? [Y/n] y root@vultr:~# #redis-server를 자동실행 서비스에 등록한다. root@vultr:~# sudo apt-get install sysv-rc-conf root@vultr:~# sysv-rc-conf redis-server on
root@vultr:~# redis-cli 127.0.0.1:6379> keys * (empty list or set) 127.0.0.1:6379> quit root@vultr:~# |
3. phpredis 설치
PHP 에서 redis 를 사용하기 위해서는 phpredis 라는 php 모듈이 필요합니다. 모듈을 컴파일해서 설치해야합니다. 어렵지 않음으로 순서만 잘 이해하면 됩니다.
먼저 php설치정보를 확인해야 합니다. php -i 나 웹페이지에서 phpinfo() 를 확인합니다.
화면에서 php.ini 의 설치위치를 잘봐둡니다. 제 서버는 /usr/local/php/etc/php.ini 에 위치하고 있네요.
phpredis 를 다운받아 컴파일 해야 합니다. 컴파일 순서는 아래와 같습니다.
phpredis 최신 버전을 다운받습니다. git 을 통해 받거나, wget 으로 받으시면 됩니다.
다운받은 파일을 압축을 해제한다음, 디렉토리로 이동합니다.
phpize 를 실행해줍니다. phpize 를 찾이못한다면, 풀경로로 실행합니다.
configure 를 실행합니다. 이때 php 가 설치된 php-config 정보를 넣어줍니다.
make, make install 을 실행해줍니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
[https://github.com/nicolasff/phpredis/zipball/master -O phpredis.zip Saving to: “phpredis.zip” [root@vultr ~]# unzip phpredis.zip [root@vultr ~]# ll total 228 drwxr-xr-x 5 root root 4096 Sep 27 14:59 phpredis-phpredis-24e7859 -rw-r--r-- 1 root root 224711 Nov 9 21:45 phpredis.zip [root@vultr ~]# [root@vultr ~]# cd phpredis-phpredis-24e7859/ [root@vultr phpredis-phpredis-24e7859]# phpize Configuring for: PHP Api Version: 20131106 Zend Module Api No: 20131226 Zend Extension Api No: 220131226 [root@vultr phpredis-phpredis-24e7859]# #만약 phpize 를 못 찾는다면 # /usr/local/php/bin/phpize 처럼 전체 경로로 실행 #configure 실행
[root@vultr phpredis-phpredis-24e7859]# ./configure --with-php-config=/usr/local/php/bin/php-config ...... creating libtool appending configuration tag "CXX" to libtool configure: creating ./config.status config.status: creating config.h [root@vultr phpredis-phpredis-24e7859]#
#컴파일 [root@vultr phpredis-phpredis-24e7859]# make ... Build complete. Don't forget to run 'make test'. [root@vultr phpredis-phpredis-24e7859]# [root@vultr phpredis-phpredis-24e7859]# make install Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/ [root@vultr phpredis-phpredis-24e7859]# |
위에서 make install 후 출력되는 경로를 잘 확인해두어야 합니다. 나중에 php.ini 에 추가할 예정
/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/
php.ini 파일을 수정해 주어야 합니다. php.ini 파일 위치는 아까 phpinfo()에서 확인하였습니다.
php.ini 파일을 열어서 마지막에 아래 라인을 추가해줍니다.
저장후 php-fpm 을 재시작하고 다시 phpinfo()를 보시면 php에 redis 모듈이 표시되는걸 확인할수 있습니다. 세션 정보도 redis 로 변경합니다.
[redis]
extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/redis.so
session.save_handler = redis
session.save_path = “tcp://127.0.0.1:6379”
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
[root@vultr phpredis-phpredis-24e7859]# vi /usr/local/php/etc/php.ini
[redis] extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/redis.so session.save_handler = redis session.save_path = "tcp://127.0.0.1:6379" :wq
[root@vultr phpredis-phpredis-24e7859]# php -i | grep redis redis Registered save handlers => files user redis rediscluster session.save_handler => redis => redis PWD => /root/phpredis-phpredis-24e7859 _SERVER["PWD"] => /root/phpredis-phpredis-24e7859 This program is free software; you can redistribute it and/or modify [root@vultr phpredis-phpredis-24e7859]# |
4. 마지막으로 php로 redis 테스트
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php $redis_host = "127.0.0.1"; $redis_port = 6379; echo "<h1>redis 테스트<h1><br/>"; try { $redis = new Redis(); $redis->connect($redis_host, $redis_port, 1000); $key = "mytest:first_key:incr_test"; //키분류는 :(콜론)을 찍는게 일반적 $value = $redis->get($key); echo "value : ".$value."<br>"; $redis->incr($key); //테스트를 위해 값증가 $redis->expire($key, 3); //3초만 유지함. } catch(Exception $e) { die($e->getMessage()); } ?> |
해당 소스를 저장후 웹페이지서 테스트를 하면, 처음 value가 없다가 새로고침 할때마다 1씩 증가합니다. 3초간 기다렸다가 다시 새로고침하면, 초기화 되는걸 볼수 있습니다.
phpredis 의 자세한 사용법은 https://github.com/phpredis/phpredis 를 참고하세요.
5. 끝으로..
그누보드5 (영카트) 에서 사용할때 주의점
그누보드5의 common.php 에는 session 설정과 관련된 코드가 들어 있습니다. redis 를 session 저장소로 사용하는 경우 session.save_path 를 수정하면 안됩니다. /common.php 파일 190번 라인에 있는 아래 코드를 주석 처리 합니다.
//session_save_path(G5_SESSION_PATH);
3
댓글 6개
nasxi 관련글도 한번 부탁드립니다!
naxsi 관련된건 준비할게 많네요. 예전쓰더거랑 버전이 좀 올라서 바뀐것도 있구요.
기대하게습니다 ㅎ