CentOS에서 Apache와 PHP 환경에 Redis 설치하고 설정하는 방법 I 적용까지

Redis란 무엇인가요?
Redis는 오픈 소스 인메모리 데이터 구조 저장소로, 키-값 형태로 데이터를 저장하고 빠르게 접근할 수 있는 캐시 시스템입니다.
또한, 다양한 데이터 구조(리스트, 세트, 해시 등)를 지원해 매우 유용합니다.
이번 글에서는 CentOS에서 Apache와 PHP 환경에 Redis를 설치하고, 이를 활용하는 방법을 알려드리겠습니다..
1. CentOS에 Redis 설치하기
먼저 Redis를 CentOS 서버에 설치하는 과정입니다. CentOS의 기본 패키지 관리자인 yum을 사용해 Redis를 쉽게 설치할 수 있습니다.
EPEL(Extra Packages for Enterprise Linux) 리포지터리 활성화
Redis 설치
Redis 서비스 시작 및 부팅 시 자동 실행 설정
Redis가 정상적으로 실행되었는지 확인하려면 다음 명령어로 확인할 수 있습니다.
2. PHP에서 Redis 사용하기
PHP 애플리케이션에서 Redis를 사용하려면 php-redis 확장을 설치해야 합니다.
이를 통해 PHP 코드 내에서 Redis와 연결하고 데이터를 다룰 수 있습니다.
php-redis 확장 설치
여기까지 입력한걸 서버에 접속해서 살펴보도록 하겠습니다
문제가 없다면 systemctl status redis 명령어를 쳤을 경우 아래처럼 나올겁니다.
3. Redis 활용 예제 - 캐시 시스템
Redis는 주로 캐시 시스템으로 많이 사용됩니다. 데이터베이스에서 자주 조회되는 정보를 Redis에 저장하고,
해당 데이터를 빠르게 읽어오는 방식으로 성능을 최적화할 수 있습니다.
Chat-Gpt 데이터베이스 쿼리 캐싱 예제
redis = new Redis()
redis->connect(127.0.0.1, 6379)
// 캐시된 데이터 확인
cached_data = redis->get(user_1_data)
if (cached_data) {
// 캐시된 데이터가 있는 경우
}
else {
// 캐시된 데이터가 없으면 데이터베이스에서 조회
db_data = Database data for user 1 // 예시 데이터베이스 쿼리 결과
redis->set(user_1_data, db_data, 3600) // 1시간 동안 캐시 저장
}
이제 모든 준비작업은 끝났습니다.
본인이 운영중인 서비스나 소스에서 위와같이 예제를 적용하면됩니다.
저는 통합 포탈 페이지를 운영하는데, 페이지를 자주 방문하는 사용자들이 많습니다.
이럴 경우, 매번 DB에 접근하면 DB 성능에 부담을 줄 수 있을 것 같아,
그 부분에만 Redis를 적용해 보았습니다.
특히, 포스트 이미지나 제목과 같은 데이터를 Redis 키에 캐싱하여 사용하고 있습니다.
이렇게 캐싱을 활용함으로써 DB에 대한 부하를 줄이고, 페이지 로딩 속도 또한 개선할 수 있었습니다.
Redis를 사용할 때 중요한 점
데이터가 변경될 수 있는 상황을 고려하는 것입니다.
예를 들어, 포스트 이미지나 타이틀과 같은 데이터를 Redis에서 캐싱해 두면 성능이 향상되지만,
관리자가 데이터를 수정할 경우 캐시된 내용은 더 이상 최신 정보가 아닐 수 있습니다.
이때, 캐시된 데이터를 삭제하고 다시 SET 명령어를 사용하여 최신 데이터를 저장하는 것이 필수적입니다.
이를 통해 항상 최신 데이터를 제공할 수 있도록 관리하는 것이 중요합니다.
4. Redis 활용 점검
이후, Redis가 제대로 활용되고 있는지 확인하기 위해 redis-cli INFO stats 명령어를 사용하여 Redis의 상태를 점검했습니다.
이 명령어를 통해 캐시된 데이터의 처리량, 메모리 사용량, 명령어 처리 속도 등을 확인할 수 있어
Redis가 정상적으로 작동되고 사용되는지 쉽게 알 수 있었습니다.
사용 사례
이 통계 정보는 Redis 서버의 성능을 모니터링하고, 과부하나 비정상적인 활동을 탐지하는데 매우 유용합니다.
expired_keys 값이 급격히 증가하면, TTL을 설정한 키들이 예상보다 자주 만료되고 있다는 의미로,
이로 인해 캐시 효율성이 떨어질 수 있습니다.
evicted_keys 값이 비정상적으로 높다면,
Redis가 메모리를 초과하여 일부 키를 제거하고 있다는 것을 의미합니다.
이 경우 메모리 용량을 조정하거나 캐시 만료 정책을 재검토해야 할 필요가 있습니다.
keyspace_hits와 keyspace_misses 값을 통해 Redis 캐시 성능을 점검할 수 있습니다.
keyspace_hits가 높고 keyspace_misses가 낮다면 캐시가 효과적으로 활용되고 있다는 신호입니다.
아래처럼 통합 포탈 페이지를 새로 고침 할 때마다 keyspace_hits가 계속 올라가는 것을 체크했습니다.
추가적으로, 데이터베이스 I/O나 Redis 적용을 통한 성능 측정을 통해,
각 방식의 처리 시간에 대한 비교를 진행하고 이를 로그로 남겨둬 비교하는 방법을 사용해도됩니다.
이를 통해 보다 효율적인 시스템 운영이 가능할 것입니다.
감사합니다.