メインコンテンツへ移動

เนื้อหาภาษาไทย / タイ語のコンテンツ

システムガイド 内容確認済み

Redis คืออะไร: ติดตั้งและตั้งค่า Redis

บทความนี้แนะนำ Redis ซึ่งเป็น in-memory data structure store ที่ใช้เป็นฐานข้อมูล, cache, และ message broker เพื่อเพิ่มประสิทธิภาพของ Application โดยเน้นการติดตั...

Redis คืออะไร: ติดตั้งและตั้งค่า Redis

ในบทความที่แล้ว เราได้เรียนรู้เกี่ยวกับ OPcache ซึ่งเป็นกลไก caching ที่ทำงานในระดับ PHP เพื่อเพิ่มความเร็วในการทำงานของ Application ในบทนี้ เราจะมาทำความรู้จักกับอีกหนึ่งเครื่องมือ caching ที่ทรงพลังและได้รับความนิยมอย่างมาก นั่นคือ Redis

Redis คืออะไร?

Redis (Remote Dictionary Server) คือ in-memory data structure store ที่ถูกใช้เป็นฐานข้อมูล, cache และ message broker Redis มีความเร็วสูงมากเนื่องจากข้อมูลถูกเก็บไว้ในหน่วยความจำ (RAM) ทำให้การเข้าถึงข้อมูลเป็นไปอย่างรวดเร็ว เหมาะสำหรับงานที่ต้องการประสิทธิภาพสูง เช่น:

  • Caching: เก็บข้อมูลที่ใช้บ่อยเพื่อลดการเข้าถึงฐานข้อมูลโดยตรง
  • Session Management: จัดการ session ของผู้ใช้งาน
  • Real-time Analytics: ประมวลผลข้อมูลแบบเรียลไทม์
  • Message Queue: ส่งข้อความระหว่าง Application
  • Leaderboard: จัดอันดับผู้เล่นในเกม

Redis รองรับ data structure ที่หลากหลาย เช่น Strings, Hashes, Lists, Sets, Sorted Sets, Bitmaps, HyperLogLogs, Geospatial indexes, และ Streams ทำให้สามารถนำไปประยุกต์ใช้ได้ในหลายรูปแบบ

ทำไมต้องใช้ Redis แทน OPcache?

OPcache และ Redis ต่างก็เป็นเครื่องมือ caching แต่มีความแตกต่างกันในด้านขอบเขตการใช้งาน:

  • OPcache: ทำงานในระดับ PHP ช่วยลดเวลาในการ parse และ compile scripts เหมาะสำหรับ caching bytecode ของ PHP
  • Redis: เป็น in-memory data store ที่ทำงานแยกจาก PHP สามารถใช้ caching ข้อมูลใดๆ ก็ได้ ไม่จำกัดเฉพาะ bytecode เหมาะสำหรับ caching ข้อมูลที่ได้จากการ query ฐานข้อมูล, API calls หรือข้อมูลอื่นๆ ที่มีการเปลี่ยนแปลงไม่บ่อยนัก

โดยทั่วไปแล้ว OPcache จะถูกใช้เพื่อ optimize การทำงานของ PHP เอง ในขณะที่ Redis จะถูกใช้เพื่อ caching ข้อมูลในระดับ Application

การติดตั้ง Redis

การติดตั้ง Redis ทำได้หลายวิธี ขึ้นอยู่กับระบบปฏิบัติการที่คุณใช้งาน

บน Ubuntu/Debian

ใช้คำสั่งต่อไปนี้เพื่อติดตั้ง Redis บน Ubuntu หรือ Debian:

sudo apt update
sudo apt install redis-server

หลังจากติดตั้งเสร็จสิ้น Redis จะเริ่มทำงานโดยอัตโนมัติ คุณสามารถตรวจสอบสถานะได้โดยใช้คำสั่ง:

sudo systemctl status redis-server

บน CentOS/RHEL

ใช้คำสั่งต่อไปนี้เพื่อติดตั้ง Redis บน CentOS หรือ RHEL:

sudo yum install epel-release
sudo yum install redis

หลังจากติดตั้งเสร็จสิ้น คุณต้อง start และ enable Redis service:

sudo systemctl start redis
sudo systemctl enable redis
sudo systemctl status redis

บน macOS

คุณสามารถติดตั้ง Redis บน macOS ได้โดยใช้ Homebrew:

brew update
brew install redis

หลังจากติดตั้งเสร็จสิ้น คุณสามารถ start Redis ได้โดยใช้คำสั่ง:

brew services start redis

บน Windows

Redis ไม่ได้ถูกพัฒนาให้ทำงานบน Windows โดยตรง แต่คุณสามารถใช้ Redis บน Windows ได้โดยใช้:

  • Windows Subsystem for Linux (WSL): ติดตั้ง Linux distribution (เช่น Ubuntu) บน Windows แล้วติดตั้ง Redis ตามขั้นตอนสำหรับ Ubuntu/Debian
  • Docker: ใช้ Docker container ที่มี Redis
  • Third-party Redis builds: มีผู้พัฒนาที่สร้าง Redis builds สำหรับ Windows แต่ควรระมัดระวังในการใช้งาน

ในตัวอย่างนี้ เราจะสมมติว่าคุณใช้ WSL และติดตั้ง Ubuntu เพื่อติดตั้ง Redis บน Windows

การตั้งค่า Redis

หลังจากติดตั้ง Redis แล้ว คุณอาจต้องการปรับแต่งการตั้งค่าให้เหมาะสมกับการใช้งานของคุณ ไฟล์ configuration ของ Redis มักจะอยู่ที่ /etc/redis/redis.conf (บน Linux) หรือ /usr/local/etc/redis.conf (บน macOS)

ต่อไปนี้คือการตั้งค่าที่สำคัญบางส่วนที่คุณอาจต้องการปรับแต่ง:

  • bind: กำหนด IP address ที่ Redis จะ listen สำหรับ connections โดยค่าเริ่มต้นคือ 127.0.0.1 ซึ่งหมายความว่า Redis จะรับ connections จาก localhost เท่านั้น หากคุณต้องการให้ Redis รับ connections จากภายนอก คุณต้องเปลี่ยนค่านี้เป็น 0.0.0.0 หรือ IP address ของ server ของคุณ
  • port: กำหนด port ที่ Redis จะ listen โดยค่าเริ่มต้นคือ 6379
  • requirepass: กำหนด password สำหรับ authentication เพื่อป้องกันการเข้าถึง Redis โดยไม่ได้รับอนุญาต
  • maxmemory: กำหนดปริมาณ memory สูงสุดที่ Redis จะใช้ หาก Redis ใช้ memory เกินกว่าที่กำหนด จะมีการ eviction (ลบ) ข้อมูลเก่าออกไป
  • maxmemory-policy: กำหนด policy สำหรับการ eviction ข้อมูลเมื่อ memory เต็ม เช่น volatile-lru (ลบข้อมูลที่มี expiry time ที่ถูกใช้งานน้อยที่สุด) หรือ allkeys-lru (ลบข้อมูลทั้งหมดที่ถูกใช้งานน้อยที่สุด)

ตัวอย่างการตั้งค่า redis.conf

# bind 127.0.0.1 -::1
bind 0.0.0.0 # Allow connections from anywhere (for demonstration only, use with caution!)
port 6379
requirepass your_strong_password
maxmemory 1gb
maxmemory-policy allkeys-lru

ข้อควรระวัง: การเปิดให้ Redis รับ connections จากภายนอกโดยไม่มี password เป็นเรื่องที่อันตรายอย่างยิ่ง เนื่องจากใครก็ตามที่มี access ไปยัง server ของคุณจะสามารถเข้าถึงข้อมูลใน Redis ได้

หลังจากแก้ไข redis.conf แล้ว คุณต้อง restart Redis service เพื่อให้การตั้งค่าใหม่มีผล:

sudo systemctl restart redis-server # บน Linux
brew services restart redis # บน macOS

การเชื่อมต่อกับ Redis

หลังจากติดตั้งและตั้งค่า Redis แล้ว คุณสามารถเชื่อมต่อกับ Redis ได้โดยใช้ command-line client ที่มาพร้อมกับ Redis:

redis-cli

หากคุณตั้งค่า password คุณต้อง authenticate ก่อน:

auth your_strong_password

เมื่อเชื่อมต่อสำเร็จ คุณสามารถใช้คำสั่ง Redis ต่างๆ ได้ เช่น:

set mykey "Hello Redis"
get mykey

การใช้ Redis ใน PHP

ในการใช้ Redis ใน PHP คุณต้องติดตั้ง Redis extension:

sudo apt install php-redis # บน Ubuntu/Debian
sudo yum install php-redis # บน CentOS/RHEL

หลังจากติดตั้ง extension แล้ว คุณต้อง restart web server (เช่น Apache หรือ Nginx) เพื่อให้ extension ถูก load

ต่อไปนี้คือตัวอย่างการใช้งาน Redis ใน PHP:

<?php

// เชื่อมต่อกับ Redis
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

// หากมีการตั้งค่า password
$redis->auth('your_strong_password');

// กำหนดค่า
$redis->set('mykey', 'Hello Redis from PHP');

// อ่านค่า
$value = $redis->get('mykey');

echo $value; // Output: Hello Redis from PHP

// กำหนดค่าที่มี expiry time
$redis->setex('mykey_expire', 60, 'This value will expire in 60 seconds');

// ตรวจสอบว่า key มีอยู่หรือไม่
if ($redis->exists('mykey')) {
    echo "Key exists!";
}

// ลบ key
$redis->del('mykey');

// ปิดการเชื่อมต่อ
$redis->close();

?>

ข้อผิดพลาดที่พบบ่อย

  • ไม่สามารถเชื่อมต่อกับ Redis: ตรวจสอบให้แน่ใจว่า Redis server กำลังทำงาน และคุณใช้ host และ port ที่ถูกต้อง
  • Authentication failed: ตรวจสอบให้แน่ใจว่าคุณใช้ password ที่ถูกต้อง
  • Redis server gone away: การเชื่อมต่อถูกตัดขาดเนื่องจาก inactivity หรือปัญหาอื่นๆ
  • Permission denied: ตรวจสอบ permissions ของไฟล์ redis.conf และ directories ที่เกี่ยวข้อง

สรุป

ในบทนี้ เราได้เรียนรู้เกี่ยวกับ Redis, วิธีการติดตั้ง, การตั้งค่า และการใช้งาน Redis ใน PHP Redis เป็นเครื่องมือ caching ที่มีประสิทธิภาพสูง ซึ่งสามารถช่วยปรับปรุง performance ของ Application ของคุณได้อย่างมาก ในบทถัดไป เราจะมาดูวิธีการนำ Redis ไปใช้ caching ข้อมูลใน PHP อย่างละเอียด

Office.in.th Custom Service

この構成をもとにシステムを開発・カスタマイズしたいですか?

Office.in.th は、エンタープライズ Web アプリケーション、API 連携、官民の業務管理システムの設計・開発を承り、長期的なサポートも提供します。

ソフトウェア開発サービスを見る