Redis로 php session을 저장해보았다.
Redis 설치도 해보았으니 실제로 프로그램과 연동해봐야지 않겠나 싶어,
이런저런 검색을 하다 보니 일반적으로 세션 저장소로 많이 이용되는거 같다.
이 회사에서 근무하시는 tomita 님이 php session 을 예제로 잘 적어주신 블로깅
PHP のセッション管理に Redis + phpredis 拡張を使う
이 있어 번역해봣다.
( 저작권 이런거 괜찬을지 모르겠다.. )
php.ini 혹은 php 파일 내에서 설정이 가능
설정하는 방법은 ini 파일에서 수정하거나 스크립트 파일내에 작성하는 방법이 있는데,
서버 설정을 수정하기 어려울경우는 php파일 내에서 설정하고 ,
그외의 경우는 php.ini 파일 에서 설정하는것이 좋다고 생각한다.
php.ini 의 경우
[Session] . . session.save_handler = redis . # 인증이 필요하지 않은경우 파라미터(auth=password) 부분은 제거 한다. session.save_path = "tcp://127.0.0.1:6379?auth=password"
php파일 의 경우
<?php ini_set( 'session.save_handler', 'redis' ); // 인증이 필요하지 않은경우 파라미터(auth=password) 부분은 제거 한다. ini_set( 'session.save_path', 'tcp://127.0.0.1:6379?auth=password' );
페이지가 리로드될때 카운트되는 스크립트로 확인
페이지 를 리로드 할때 세션을 체크해서 카운트를 올리는 간단한 스크립트를 작성하여, 작동하는지 확인해본다.
php 스크립트
<?php session_start(); if(!isset($_SESSION['cnt'])){ $_SESSION['cnt'] = 0; } $_SESSION['cnt']++; echo $_SESSION['cnt'];
Redis 클라이언트 툴로 확인
$ redis-cli 127.0.0.1:6379> MONITOR OK # 페이지를 두번 리로드 해본결과 1475599769.513189 [0 127.0.0.1:35646] "AUTH" "password" 1475599769.513365 [0 127.0.0.1:35646] "GET" "PHPREDIS_SESSION:r9jj11eucshjo37mjap5qp61t6" 1475599769.513526 [0 127.0.0.1:35646] "SETEX" "PHPREDIS_SESSION:r9jj11eucshjo37mjap5qp61t6" "1440" "cnt|i:1;" 1475599775.713449 [0 127.0.0.1:35656] "AUTH" "password" 1475599775.713495 [0 127.0.0.1:35656] "GET" "PHPREDIS_SESSION:r9jj11eucshjo37mjap5qp61t6" 1475599775.713637 [0 127.0.0.1:35656] "SETEX" "PHPREDIS_SESSION:r9jj11eucshjo37mjap5qp61t6" "1440" "cnt|i:2;" ^C $ redis-cli 127.0.0.1:6379> keys * 1) "PHPREDIS_SESSION:r9jj11eucshjo37mjap5qp61t6"
참고
PHP のセッション管理に Redis + phpredis 拡張を使う
byzz
•6년 ago
감사합니다