redis + phpredis 설치 및 php 에서 redis 사용방법 > 그누보드5 팁자료실

그누보드5 팁자료실

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개

설치후 실제 그누보드5(영카트5)에서 사용가능한 플러그인 업로드 했습니다. 많이 이용해주세요.^^

https://sir.kr/g5_plugin/3261
잘보고 있다니, 감사드립니다.
naxsi 관련된건 준비할게 많네요. 예전쓰더거랑 버전이 좀 올라서 바뀐것도 있구요.
전체 30 |RSS
그누보드5 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT