워드프레스가 느린 원인의 상당수는 페이지를 만들 때마다 같은 데이터베이스 쿼리를 반복하는 데 있습니다. Redis 오브젝트 캐시는 이 반복 쿼리를 메모리에서 꺼내 쓰게 만들어, 특히 관리자 화면과 로그인 사용자 요청을 눈에 띄게 빠르게 합니다.
오브젝트 캐시가 해결하는 문제
워드프레스는 요청 한 번에 옵션 테이블 · 메뉴 · 위젯 · 택소노미를 반복 조회합니다. 오브젝트 캐시가 없으면 이 조회가 매번 DB 를 왕복합니다. DB 가 원격에 있다면 왕복 지연이 그대로 응답 시간에 더해집니다.
페이지 캐시와의 역할 분리
혼동하기 쉬운 지점입니다. 페이지 캐시(nginx FastCGI)는 비로그인 방문자의 완성된 HTML 을 저장하고, 오브젝트 캐시(Redis)는 로그인 사용자·관리자·동적 요청의 반복 쿼리를 저장합니다. 하나가 다른 하나를 대체하지 않으며, 같은 응답을 두 계층이 캐시하면 무효화 타이밍이 어긋나 “관리자에게는 새 페이지, 방문자에게는 옛 페이지” 문제가 생깁니다. 계층마다 책임을 하나씩만 주세요.
설치와 wp-config 설정
플러그인은 Till Krüss 의 Redis Object Cache 를 사용합니다. wp-config.php 에 접속 정보를 상수로 선언합니다.
define( 'WP_REDIS_HOST', '127.0.0.1' );
define( 'WP_REDIS_PORT', 6379 );
define( 'WP_REDIS_PASSWORD', '********' );
define( 'WP_REDIS_DATABASE', 3 );
define( 'WP_REDIS_PREFIX', 'wper_' );
WP-CLI 로 켜고 확인하기
wp plugin activate redis-cache
wp redis enable
wp redis status # Status: Connected / Drop-in: Valid 확인
실측: 이 사이트를 구축하며 만난 것들
이 사이트를 구축하면서 실제로 만난 문제와 해결을 그대로 적습니다.
- NOAUTH Authentication required — Redis 에 비밀번호가 걸려 있으면
wp redis enable이 이 오류로 실패합니다.WP_REDIS_PASSWORD를 선언하면 해결됩니다. - 키 충돌 — 한 서버의 Redis 를 여러 서비스가 공유한다면
WP_REDIS_DATABASE로 DB 인덱스를 분리하고WP_REDIS_PREFIX를 반드시 지정하세요. 프리픽스 없이 flush 하면 다른 서비스의 캐시까지 날아갑니다. - 확인 습관 — 적용 후에는 반드시
wp redis status로Connected와Drop-in: Valid를 확인합니다. 드롭인이 설치되지 않으면 플러그인이 켜져 있어도 캐시는 동작하지 않습니다.
더 큰 그림
오브젝트 캐시는 3계층 최적화(OPcache → Redis → 페이지 캐시)의 가운데 조각입니다. 전체 구성을 직접 하기 어렵다면 최적화 캠페인에서 전/후 실측 리포트와 함께 대신 구성해 드립니다. 다른 성능 주제는 성능 최적화 카테고리에서 볼 수 있습니다.