Home Knowledge base Skyline Cloud 더 빠른 웹사이트를 위한 Redis 캐싱 사용법 KNOWLEDGE BASE

더 빠른 웹사이트를 위한 Redis 캐싱 사용법

데이터베이스 부하를 획기적으로 줄이고 웹사이트 속도를 높이기 위해 Redis를 객체 캐시로 설치, 보안 설정, 구성하는 방법을 단계별로 안내합니다. WordPress, PHP, 벤치마크 검증 예제를 포함합니다.

더 빠른 웹사이트를 위한 Redis 캐싱 사용법

Redis를 객체 캐시로 설치, 보안 설정, 구성하여 데이터베이스 부하를 획기적으로 줄이고 웹사이트 속도를 높이는 방법을 실용적이고 단계별로 안내합니다 — WordPress, PHP, 벤치마크 검증 예제와 함께.

Redis가 웹사이트 속도를 높이는 이유

대부분의 동적 웹사이트 — WordPress, Laravel, Magento, 커스텀 PHP — 는 요청이 들어올 때마다 동일한 데이터를 다시 생성합니다: 메뉴, 옵션, 사용자 세션, 쿼리 결과 등이 그렇습니다. 이렇게 다시 생성할 때마다 데이터베이스에 접근하게 됩니다. 트래픽이 몰리면 데이터베이스가 병목이 되어 페이지가 느려집니다.

Redis는 인메모리 데이터 저장소입니다. 데이터베이스에 같은 질문을 반복해서 던지는 대신, 애플리케이션은 Redis에 질문하고 Redis는 1밀리초도 채 안 되는 시간에 RAM에서 답을 돌려줍니다. 그 결과 데이터베이스 쿼리가 줄고 CPU 사용량이 낮아지며 페이지 로딩이 빨라집니다 — 특히 트래픽이 많은 사이트에서 효과가 큽니다.

이 튜토리얼에서는 Redis를 설치하고, 보안을 설정하고, 캐싱에 맞게 튜닝한 다음, WordPress 또는 PHP 애플리케이션에 연동하고, 마지막으로 개선 효과를 검증하는 과정을 다룹니다. 이 단계들은 Skyline Cloud VPS 또는 클라우드 서버를 비롯해 사우디 왕국 내에서 호스팅되는 모든 Linux 서버에 적용됩니다.

사전 준비 사항

  • root 또는 sudo 권한이 있는 Linux 서버 (Ubuntu 22.04/24.04 또는 유사 배포판).
  • 객체/캐시 백엔드를 지원하는 웹 애플리케이션 (WordPress, Laravel 등).
  • 애플리케이션이 PHP 기반이라면 PHP redis 확장 모듈.

1단계 — Redis 설치

Debian/Ubuntu에서:

sudo apt update
sudo apt install redis-server -y

실행 중인지 확인합니다:

sudo systemctl enable --now redis-server
redis-cli ping

PONG이 표시되어야 합니다. 버전을 확인합니다 (ACL과 TLS를 사용하려면 Redis 6 이상을 사용하세요):

redis-server --version

2단계 — Redis 보안 설정

기본적으로 Redis는 localhost에서만 수신 대기하며, 웹 앱과 Redis가 같은 머신에서 실행되는 단일 서버 구성에서는 이것이 올바른 설정입니다. /etc/redis/redis.conf에서 이를 확인하세요:

bind 127.0.0.1 -::1
protected-mode yes

심층 방어 차원에서 localhost에서도 항상 비밀번호를 설정하세요. 강력한 비밀번호를 생성하여 설정 파일에 추가합니다:

requirepass YOUR_STRONG_PASSWORD_HERE

만약 — 정말 꼭 필요한 경우에 한해서만 — Redis를 다른 서버에서 접근해야 한다면, 바인드 주소를 단순히 열어두지 마세요. 대신 TLS와 방화벽 허용 목록(allow-list)을 활성화하거나, Redis를 비공개로 유지하고 내부 네트워크를 통해 연결하세요. 인증 없는 Redis를 공용 인터넷에 노출하는 것은 가장 흔하게 악용되는 잘못된 구성 중 하나입니다.

적용하려면 재시작합니다:

sudo systemctl restart redis-server

인증을 테스트합니다:

redis-cli -a 'YOUR_STRONG_PASSWORD_HERE' ping

3단계 — 캐싱에 맞게 Redis 튜닝

캐시가 서버의 메모리를 모두 소진시켜서는 절대 안 됩니다. 메모리 상한과 제거(eviction) 정책을 설정하여 Redis가 충돌하는 대신 오래된 항목을 버리도록 하세요. /etc/redis/redis.conf를 편집합니다:

maxmemory 256mb
maxmemory-policy allkeys-lru
  • maxmemory는 Redis가 사용할 수 있는 RAM의 양을 제한합니다. 일반적인 가이드라인은 캐싱에 할애할 수 있는 RAM의 60~75%이며, 작은 사이트라면 256mb로 시작한 뒤 필요에 따라 늘리세요.
  • allkeys-lru는 한도에 도달하면 가장 오래 사용되지 않은(least-recently-used) 키를 제거합니다. 모든 키가 폐기 가능한 순수 캐시 용도에는 이 정책이 적합합니다. (TTL이 설정된 키만 제거되기를 원하는 세션 저장소의 경우에는 volatile-lru를 사용하세요.)

편집 후 Redis를 다시 재시작합니다:

sudo systemctl restart redis-server

4단계 — WordPress를 Redis에 연결

WordPress가 가장 흔한 경우입니다. 먼저 PHP 확장 모듈을 설치합니다:

sudo apt install php-redis -y
sudo systemctl restart php8.3-fpm   # match your PHP version

wp-config.php/* That's all, stop editing! */위쪽에 연결 설정을 추가합니다:

define( 'WP_REDIS_HOST', '127.0.0.1' );
define( 'WP_REDIS_PORT', 6379 );
define( 'WP_REDIS_PASSWORD', 'YOUR_STRONG_PASSWORD_HERE' );
define( 'WP_REDIS_PREFIX', 'site1:' );
define( 'WP_REDIS_DATABASE', 0 );

여러 사이트가 하나의 Redis 인스턴스를 공유할 때는 WP_REDIS_PREFIX가 중요합니다 — 사이트마다 고유한 접두사를 두면 캐시 충돌을 방지할 수 있습니다.

Redis Object Cache 플러그인을 설치하고 활성화하세요. 대시보드에서 플러그인 → 새로 추가로 이동하여 _Redis Object Cache_를 설치하고 활성화한 다음, 설정 → Redis를 열어 Enable Object Cache를 클릭합니다. 또는 WP-CLI로:

wp plugin install redis-cache --activate
wp redis enable

상태를 확인합니다:

wp redis status

Status: ConnectedDrop-in: Valid가 표시되어야 합니다.

5단계 — 일반 PHP 앱 연결

WordPress를 사용하지 않는 경우, phpredis 확장 모듈로 직접 클라이언트를 사용할 수 있습니다. 최소한의 캐시-어사이드(cache-aside) 패턴은 다음과 같습니다:

$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->auth('YOUR_STRONG_PASSWORD_HERE');

$key = 'products:featured';
$cached = $redis->get($key);

if ($cached === false) {
    $data = expensive_db_query();          // your DB call
    $redis->setex($key, 300, serialize($data)); // cache for 300s
} else {
    $data = unserialize($cached);
}

패턴은 언제나 동일합니다: 캐시를 확인하고, 적중(hit)하면 그대로 반환하며, 실패(miss)하면 값을 계산하여 적절한 TTL과 함께 저장한 뒤 반환합니다. Laravel 같은 프레임워크는 이를 더욱 간단하게 만들어 줍니다 — .env에서 CACHE_STORE=redis(및 SESSION_DRIVER=redis)를 설정하면 됩니다.

6단계 — 개선 효과 검증

실시간 캐시 활동을 관찰합니다:

redis-cli -a 'YOUR_STRONG_PASSWORD_HERE' monitor

적중률(hit ratio)을 확인합니다 — 정상적인 캐시라면 실패보다 적중이 훨씬 많아야 합니다:

redis-cli -a 'YOUR_STRONG_PASSWORD_HERE' info stats | grep keyspace

ab(Apache Bench) 또는 curl로 Redis 활성화 전후의 페이지를 벤치마크합니다:

ab -n 200 -c 10 https://your-site.example/

두 실행의 평균 응답 시간을 비교하세요. 데이터베이스 부하가 큰 WordPress 홈페이지에서는 일반적으로 첫 바이트까지의 시간(TTFB)이 눈에 띄게 줄고 MySQL 부하가 낮아지는 것을 확인할 수 있습니다.

설정 권장 값 목적
bind 127.0.0.1 -::1 로컬 전용 접근
requirepass 강력한 시크릿 인증
maxmemory 256mb (이후 튜닝) OOM 방지
maxmemory-policy allkeys-lru 오래된 캐시 키 제거
WP_REDIS_PREFIX 사이트마다 고유 충돌 방지

흔한 실수

  • 메모리 한도 미설정. maxmemory가 없으면 Redis가 RAM을 모두 소비하여 서버를 충돌시킬 수 있습니다. 항상 상한을 설정하세요.
  • 캐시가 실제로 활성화되지 않음. 플러그인 설치만으로는 충분하지 않습니다. 드롭인(drop-in)을 활성화(wp redis enable)하고 Connected 상태를 확인해야 합니다.
  • 오래된 콘텐츠. 지나치게 공격적인 캐싱은 구버전 페이지를 제공할 수 있습니다. 적절한 TTL을 사용하고 배포 시 캐시를 비우세요(wp redis flush 또는 FLUSHDB).
  • Redis 노출. TLS와 인증 없이 Redis를 공용 IP에 바인드하지 마세요.

사우디 왕국 내 클라우드에서 실행하기

Redis는 적절히 사이징된 서버와 완벽하게 어울립니다. Skyline Cloud에서는 사우디아라비아 내에서 호스팅되는 VPS 또는 클라우드 서버에서 Redis를 실행하여 데이터와 캐싱 계층을 PDPL 및 NCA 요구사항에 맞게 준수하면서 현지 아랍어 지원까지 받을 수 있습니다. 관리형 비즈니스 이메일과 함께 사용하여 완성된 스택을 구축하고, 사우디 웹 호스팅 허브에서 더 많은 성능 가이드를 살펴보세요.

더 빠른 사이트를 배포할 준비가 되셨나요? Skyline Cloud 계정을 만들고 몇 분 만에 사우디 왕국 내 서버를 구축하세요.

SKYLINE Engineering

@skyline

The engineering team at SKYLINE Industrial Solutions. We publish field-tested guides drawn from real KSA and GCC deployments.

See author profile
SKYLINE engineering services

Need this implemented for you?

Reading is free — building it right takes a team. SKYLINE engineers ship Skyline Cloud for Aramco vendors, banks, hospitals and government agencies across Saudi Arabia. Talk to us before you start.

Aramco Approved Contractor ISO 9001 · ISO 27001 SAMA CSF aligned NCA ECC ready 247+ KSA clients

Comments

0 total · 0 threads
Be the first to leave a comment.