1. redis(레디스)가 뭔가요? 많이 들어는 봤는데…..
레디스(REmote DIctionary Server) 는 메모리기반 key-value store(저장소) 입니다.
redis 는 주로 두가지 용도로 많이 습니다.
1. 데이타(또는 페이지) 캐시
2. 세션 저장소
세션 저장소로 사용할 경우 대용량 분산처리가 가능하며, 서브도메인 세션공유를 쉽게 처리할수 있습니다.
2. redis 설치 및 시작
2.1 centos6.x 에서 redis 설치 (centos7 도 동일)
[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 에서 설치
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 을 실행해줍니다.
[root@vultr ~]# wget 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”
[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 테스트
<?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);
'프로그래밍 > php' 카테고리의 다른 글
[PHP] Laravel jetstream login 시 http 문제 (0) | 2021.11.29 |
---|---|
[php] 오토로더(Auto loader) (0) | 2019.07.19 |
[PHP] Predis 사용법 (0) | 2019.05.22 |
[jQuery] HTML5의 커스텀 데이터 속성을 제이쿼리를 이용하여 조작하기 (0) | 2018.04.05 |
[php]파일을 문자열로 읽기. (0) | 2018.03.08 |