Redis database caching server

ติดตั้งและตั้งค่า Redis Cache บน VPS เพิ่มความเร็วเว็บ

มิถุนายน 2026 · อ่าน 7 นาที

Redis เป็น in-memory data store ที่เร็วที่สุดตัวหนึ่ง ใช้เป็น cache ลด database query, เก็บ session, queue หรือ pub/sub ได้ทุกแอป ติดตั้งง่ายบน VPS และเห็นผลทันทีในแง่ความเร็ว


ติดตั้ง Redis

apt update
apt install redis-server -y

ตั้งค่า Redis (/etc/redis/redis.conf)

ผูก Redis กับ Localhost เท่านั้น

bind 127.0.0.1 ::1

ไม่ควร expose Redis ออก internet โดยตรงเด็ดขาด

ตั้ง maxmemory และ Eviction Policy

maxmemory 256mb
maxmemory-policy allkeys-lru

allkeys-lru คือ Least Recently Used — ลบ key ที่ไม่ค่อยใช้ออกเมื่อ memory เต็ม เหมาะสำหรับ cache

ตั้ง Password

requirepass YourStrongPasswordHere

เลือก Persistence Mode

# สำหรับ cache ล้วนๆ ปิด persistence เพื่อประหยัด disk I/O
save ""

# ถ้าต้องการ persistence ใช้ AOF
appendonly yes

Restart และ Enable

systemctl restart redis-server
systemctl enable redis-server

ทดสอบ Redis

redis-cli -a YourStrongPasswordHere ping
# ตอบ: PONG

redis-cli -a YourStrongPasswordHere
127.0.0.1:6379> SET testkey "hello"
127.0.0.1:6379> GET testkey
# ตอบ: "hello"

ใช้ Redis กับ WordPress

ติดตั้ง plugin Redis Object Cache แล้วเพิ่มใน wp-config.php:

define('WP_REDIS_HOST', '127.0.0.1');
define('WP_REDIS_PORT', 6379);
define('WP_REDIS_PASSWORD', 'YourStrongPasswordHere');
define('WP_REDIS_DATABASE', 0);

ใช้ Redis เป็น PHP Session Store

# ติดตั้ง PHP Redis extension
apt install php-redis -y

# แก้ใน php.ini
session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379?auth=YourStrongPasswordHere"

Monitor Redis

# ดู stats
redis-cli -a password INFO stats

# ดู key จำนวนและ memory
redis-cli -a password INFO keyspace
redis-cli -a password INFO memory

# Monitor command realtime (debug)
redis-cli -a password MONITOR
Memory tip: ดู used_memory_human และ maxmemory_human ใน INFO memory ถ้า hit rate ต่ำกว่า 80% แสดงว่า TTL สั้นเกินไปหรือ cache ไม่ match pattern การใช้งาน

สรุป

Redis ติดตั้งไม่เกิน 5 นาที แต่เพิ่ม performance ให้แอปได้อย่างมีนัยสำคัญ โดยเฉพาะเว็บที่มี database query ซ้ำๆ ในทุก request

ตรวจสอบว่า Redis ทำงานถูกต้อง

# ตรวจสถานะ service
systemctl status redis-server

# ทดสอบ connection
redis-cli -a YourPassword ping
# ต้องได้ PONG

# ดู hit rate ของ cache
redis-cli -a YourPassword INFO stats | grep -E "keyspace_hits|keyspace_misses"
# hit_rate = hits / (hits + misses) * 100 — ควรสูงกว่า 80%

# ดู memory usage
redis-cli -a YourPassword INFO memory | grep used_memory_human
WordPress Object Cache: หลังตั้งค่า plugin Redis Object Cache แล้ว ไปที่ Settings → Redis → กด "Enable Object Cache" จะเห็นสถานะ "Connected" และ hit/miss stats

แก้ปัญหาที่พบบ่อย

Error: "NOAUTH Authentication required"

ตั้ง password ใน redis.conf แล้ว แต่ลืมส่ง auth ใน command หรือใน app config:

# WordPress: ตรวจ wp-config.php มี WP_REDIS_PASSWORD ครบไหม
grep WP_REDIS /var/www/html/wp-config.php

# ส่ง password กับ redis-cli
redis-cli -a YourStrongPassword ping

Error: "OOM command not allowed when used memory > 'maxmemory'"

Redis memory เต็ม eviction policy ไม่ได้ตั้งหรือตั้งเป็น noeviction:

# ตรวจ policy ปัจจุบัน
redis-cli -a password CONFIG GET maxmemory-policy

# เปลี่ยนโดยไม่ต้อง restart
redis-cli -a password CONFIG SET maxmemory-policy allkeys-lru

# เพิ่ม maxmemory ถ้า RAM เหลือ
redis-cli -a password CONFIG SET maxmemory 512mb

Redis service start ไม่ขึ้น

# ดู error log
journalctl -u redis-server --no-pager -n 30
cat /var/log/redis/redis-server.log

# ปัญหาบ่อยคือ /run/redis permission ผิด
mkdir -p /run/redis
chown redis:redis /run/redis
systemctl start redis-server

WordPress ไม่ใช้ Redis cache แม้จะ connect สำเร็จ

object-cache.php drop-in ยังไม่ถูก install:

# ผ่าน WP-CLI
wp redis enable --path=/var/www/html

# หรือใน WordPress admin: Settings → Redis → Enable Object Cache

ต้องการ flush cache ทั้งหมด

# Flush ทุก key (ใช้ระวัง)
redis-cli -a password FLUSHALL

# Flush เฉพาะ database 0
redis-cli -a password -n 0 FLUSHDB

คำถามที่พบบ่อย

Redis กับ Memcached ต่างกันอย่างไร ควรใช้ตัวไหน?

Redis รองรับ data structure หลากหลาย (string, hash, list, set, sorted set) มี persistence option และ pub/sub ส่วน Memcached เร็วกว่าเล็กน้อยสำหรับ pure key-value cache ปัจจุบัน Redis เป็นตัวเลือกหลักสำหรับ use case ส่วนใหญ่

ควรตั้ง maxmemory เท่าไร?

แนะนำไม่เกิน 25–30% ของ RAM ทั้งหมด เช่น VPS 4 GB ตั้ง maxmemory 1 GB เหลือ RAM ให้ OS, database และ application ทำงานได้สบาย

Redis ปลอดภัยไหมถ้า bind กับ 0.0.0.0?

ไม่ควรทำเด็ดขาด Redis ไม่ได้ออกแบบมาให้ expose ออก internet โดยตรง ให้ bind กับ 127.0.0.1 เท่านั้น ถ้าต้องการ access จาก server อื่นใช้ SSH tunnel หรือ private network