Redis 활용하기 - phpredis 세션관리하기
Redis 활용하기 - phpredis 세션관리하기
이번 포스팅에서는 Redis 이용하여 세션관리에 대해서 알아보도록 하겟습니다.
Linux Redis 이전글 |
https://server-talk.tistory.com/471 - redis - In-Memory - 알아보기
https://server-talk.tistory.com/472 - Redis - 서버 설치 및 기본설정 알아보기
https://server-talk.tistory.com/473 - Redis - Redis-cli 기본 사용법
https://server-talk.tistory.com/474 - Redis - Redis Desktop Manager Tool
https://server-talk.tistory.com/475 - phpredis 설치 알아보기
세션관리의 한계 |
초창기 세션파일의 관리는 디스크에서 하게 됩니다 서비스의 규모가 폭발적으로 커지게 되면서 세션파일 관리에 한계를 도달하게 됩니다.
먼저 1차로 서비스의 규모가 폭발적으로 커지게 되면서 세션파일 관리가 더욱더 커지게 되고 2차로 로그인, 검색 등등의 데이터들의 오랜시간의 유지가 유지됨에 따라 서비스의 품질이 올라가게 됩니다.
예로 세션파일이 1,000 ~ 2,000 개의 규모의 서비스에서는 문제가 없지만 세션의 개수가 100,000건, 1,000,000건이라면 서버에 저장되어 있는 세션파일의 폴더를 세션을 개수를 조회하는 것만으로도 많은 부하가 발생하게 됩니다 또한, PHP, Python 등등의 많은 프로그래밍 언어들이 세션의 조회, 검증 등등에 지연이 생기면서 수많은 장애가 발생하게 됩니다
세션과 In-memory 시스템 |
오랜 시간동안 최신의 데이터로 유지하기 위해 많은 엔지니어와 개발자들이 고안한 방법은 Inmemory 시스템을 이용하여 데이터의 처리속도를 빠른 시간에 처리하여 서비스의 품질이 많이 올라가게 됩니다.
PHP 에서 Redis 세션 저장하기 |
PHP에서 Redis에 세션을 저장하기 위해서는 php 환경설정파일에서 설정하는 방법과 php 소스상에서 수정하는 2가지 방법이 있습니다
1. php 환경설정 파일 수정
File : php.ini
# 사용법
[redis]
session.save_handler = redis
session.save_path = "tcp://[Redis 서버 IP]:[Redis Port]?auth=[패스워드]"
[redis]
session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379?auth=foobared"
2. php 파일내에서 수정
ini_set('session.save_handler', 'redis');
ini_set('session.save_path', 'tcp://127.0.0.1:6379?auth=foobared');