Multiple Redis Ports บน Mac

Multiple Redis Port บน Mac

เมื่อติดตั้ง Redis บน Mac มันจะทำงานบน Port 6379 โดยอัตโนมัติ ถ้าเราต้องการให้ Redis ทำงานบน Multiple Ports เราจะมีวิธีติดตั้งอย่างไร

Redis คืออะไร

Redis ใช้สำหรับทำ Caching Object (Key: Value) และทำ Caching Database เพื่อเพิ่มประสิทธิภาพ โดยเฉพาะความเร็วให้กับ Web App โปรแกรมต่างๆ จะถูกนำขึ้นมาทำงานบนเว็บไซต์มากขึ้น เมื่อขึ้นมาอยู่บนเว็บไซต์โปรแกรมนั้นๆ ก็ต้องทำงานเร็วเหมือนที่ติดตั้งบน OS การเรียนรู้เพื่อใช้งาน Redis จึงเป็นสิ่งจำเป็น ลองอ่าน บทความที่เกี่ยวข้อง

ติดตั้ง Redis บน Mac

ให้ติดตั้งด้วย Homebrew ด้วยคำสั่ง

brew install redis

หลังจากติดตั้ง Redis เสร็จแล้ว ไฟล์ Configuration จะอยู่ที่

# Redis Configuration File

/usr/local/etc/redis.conf

สามารถเรียกดูข้อมูล Redis ด้วยคำสั่ง

brew info redis
brew info redis command
brew info redis

ข้อสังเกต

ถ้า Linux ใช้ systemctl เป็น Prefix นำหน้าคำสั่งเกี่ยวกับจัดการระบบ

Mac ก็จะใช้ launchctl เป็น Prefix นำหน้าคำสั่งเกี่ยวกับระบบในทำนองเดียวกัน


เรียกใช้งาน Redis

ดังนั้น ถ้าต้องการเรียกใช้งาน Redis บน Mac ก็จะใช้คำสั่ง

launchctl load ~/Library/LaunchAgents/homebrew.mxcl.redis.plist

ในกรณีที่ต้องการให้ Redis ทำงานทุกครั้งที่เปิดเครื่อง ให้ใช้คำสั่ง

ln -sfv /usr/local/opt/redis/*.plist ~Library/LaunchAgents

หรือถ้าต้องการเรียกใช้งานผ่าน redis-server ให้ใช้คำสั่ง

redis-server /user/local/etc/redis.conf

ทดสอบการทำงาน

การทดสอบการทำงานของ Redis จะง่ายมากครับ แค่ไปที่ Terminal แล้วพิมพ์ redis-cli กด Enter

มันจะขึ้น 127.0.0.1:6379>

ให้พิมพ์คำว่า ping ถ้ามันตอบว่า PONG ก็แสดงว่ามันทำงานปกติครับ

redis-cli
127.0.0.1:6379> ping
PONG

เมื่อต้องการออกจาก redis-cli ให้พิมพ์ exit ครับ


Frappe Framework – Using Multiple Ports

เนื่องจากการพัฒนาโปรแกรม เช่น ERPNext เราต้องใช้ Redis ทำงานพร้อมกัน หลายพอร์ต ดังนี้

Redis Queue ทำงานบนพอร์ต 11000

# redis_queue.conf
dbfilename redis_queue.rdb
dir /Users/manotlj/frappe-bench/config/pids
pidfile /Users/manotlj/frappe-bench/config/pids/redis_queue.pid
bind 127.0.0.1
port 11000

aclfile /Users/manotlj/frappe-bench/config/redis_queue.acl

SocketIO ทำงานบนพอร์ต 12000

# redis_socketio.conf
dbfilename redis_socketio.rdb
dir /Users/manotlj/frappe-bench/config/pids
pidfile /Users/manotlj/frappe-bench/config/pids/redis_socketio.pid
bind 127.0.0.1
port 12000

aclfile /Users/manotlj/frappe-bench/config/redis_socketio.acl

และ Cache ทำงานบนพอร์ต 13000

# redis_cache.conf
dbfilename redis_cache.rdb
dir /Users/manotlj/frappe-bench/config/pids
pidfile /Users/manotlj/frappe-bench/config/pids/redis_cache.pid
bind 127.0.0.1
port 13000
maxmemory 819mb
maxmemory-policy allkeys-lru
appendonly no

save ""

aclfile /Users/manotlj/frappe-bench/config/redis_cache.acl

ถ้าไม่เปิดพอร์ตเหล่านี้ไว้ มันจะเกิด Error ในขณะติดตั้ง Frappe

*** คำสั่งที่ใช้ติดตั้ง Frappe Framework

bench init frappe-bench

โดยมันจะฟ้อง WARN Cannot connect to redis_cache to update assets_json ตามรูปประกอบ

No Redis specific ports
No Redis specific ports

ดังนั้นก่อนติดตั้ง Frappe ให้เปิดพอร์ต 11000, 12000 และ 13000 ของ Redis ก่อนครับ ตามที่จะกล่าวถึงในย่อหน้าถัดไป


Multiple Redis Ports

วิธีตั้งค่าให้สามารถทำงานบน Redis พร้อมกันหลายพอร์ตได้ เราไม่ต้องติดตั้ง Redis เพิ่มเติมนะครับ แค่เราสร้างไฟล์ redis.conf เพิ่มแค่นั้นเองครับ

ซึ่งไฟล์นี้อยู่ที่ "/usr/local/etc/redis.conf" เราสามารถคัดลอกไฟล์นี้ได้เลยครับ โดยให้ทำคำสั่งต่อไปนี้ทีละบรรทัดนะครับ

เพื่อลดความสับสน ให้เข้าไปที่โฟลเดอร์ "/usr/local/etc/" ก่อนครับ ด้วยคำสั่ง

cd /usr/local/etc/

ต่อไปก็คัดลอกไฟล์ ทีละไฟล์ครับ โดยเริ่มจากการแบ็คอัพไฟล์ ด้วยคำสั่ง

# Backup redis.conf
cp redis.conf redis.conf.backup

แล้วคัดลอกไฟล์ เพื่อใช้สร้าง Ports อื่นๆ ตามคำสั่งเหล่านี้ครับ

cp redis.conf redis11000.conf
cp redis.conf redis12000.conf
cp redis.conf redis13000.conf
redis.conf backup
redis.conf backup

*** ให้สังเกตว่าไฟล์ my.cnf ซึ่งเป็นไฟล์ MySQL Configuration ก็อยู่ในโฟลเดอร์เดียวกันนี้

คำสั่งแรกเป็นการแบ็คอัพไฟล์ต้นฉบับครับ นอกนั้นคัดลอกเป็นไฟล์ใหม่ ตั้งชื่อตามพอร์ตที่ใช้งาน

ตอนนี้ยังอยู่ที่โฟลเดอร์ "/usr/local/etc/" อยู่นะครับ ให้เปิดไฟล์

redis11000.conf, redis12000.conf และ redis13000.conf ด้วยคำสั่ง

code redis11000.conf
code redis12000.conf
code redis13000.conf

แก้ไขข้อมูลในไฟล์ดังนี้ครับ

daemonize yes
pidfile /usr/local/var/run/redis-11000.pid
port 11000
unixsocket /tmp/redis-11000.sock
logfile "/usr/local/var/log/redis-11000.log"
dbfilename redis_queue.rdb
daemonize yes
pidfile /usr/local/var/run/redis-12000.pid
port 12000
unixsocket /tmp/redis-12000.sock
logfile "/usr/local/var/log/redis-12000.log"
dbfilename redis_socketio.rdb
daemonize yes
pidfile /usr/local/var/run/redis-13000.pid
port 13000
unixsocket /tmp/redis-13000.sock
logfile "/usr/local/var/log/redis-13000.log"
dbfilename redis_cache.rdb

สร้างไฟล์สำหรับ Launch Redis ตอนเปิดเครื่อง Mac ให้เข้าไปที่โฟลเดอร์ "~/Library/LaunchAgents"

cd ~/Library/LaunchAgents

แล้วคัดลอกโค้ดจากไฟล์ homebrew.mxcl.redis.plist ไปที่ homebrew.mxcl.redis11000.plist จนถึง …13000.plist ตามลำดับ ดังนี้

cp homebrew.mxcl.redis.plist homebrew.mxcl.redis11000.plist
cp homebrew.mxcl.redis.plist homebrew.mxcl.redis12000.plist
cp homebrew.mxcl.redis.plist homebrew.mxcl.redis13000.plist

ตอนนี้ยังอยู่ที่โฟลเดอร์ "~/Library/LaunchAgents/" หลังจากคัดลอกไฟล์เสร็จเปิดไฟล์เหล่านี้ด้วย VSCode ครับ

code homebrew.mxcl.redis11000.plist
code homebrew.mxcl.redis12000.plist
code homebrew.mxcl.redis13000.plist

แล้วแก้ไขไฟล์ดังนี้ครับ


เสร็จแล้วก็สั่งโหลด Redis ที่เพิ่งสร้างพอร์ตขึ้นมาใหม่ ทีละพอร์ตครับ

launchctl load ~/Library/LaunchAgents/homebrew.mxcl.redis11000.plist
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.redis12000.plist
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.redis13000.plist

สั่ง Start Redis

redis-server /usr/local/etc/redis11000.conf
redis-server /usr/local/etc/redis12000.conf
redis-server /usr/local/etc/redis13000.conf

Redis multiple ports command steps
command steps

ลองทดสอบดูครับด้วยการ PING ดูทีละพอร์ต

redis-cli -p <PORT>

จะได้ตามภาพนี้ครับ

Testing Redis multiple ports by ping
Testing each Redis port by ping

หรืออาจใช้คำสั่ง lsof -i tcp:<PORT> เพื่อเช็คสถานะ

check Redis multiple ports
check each Redis port

อีกคำสั่งที่ใช้ดูสถานะของ Redis คือ

ps aux | grep redis
ps aux command
ps aux command

สรุป

หลังจากเปิด Multiple Redis Ports บน Mac เสร็จแล้ว เมื่อลองติดตั้ง Frappe ใหม่ เครื่องจะไม่ฟ้อง

WARN Cannot connect to redis_cache to update assets_json

แล้วนะครับ

Frappe Success Install
Frappe Success Install

เอกสารอ้างอิง

สมัครรับบทความ

ท่านจะได้รับบทความเกี่ยวกับเทคนิคในการเขียนโค้ด การสร้างเว็บไซต์ ความรู้ด้านบัญชี ภาษีอากร และอื่นๆ

0 0 votes
ให้คะแนนบทความ
Notify of
guest
0 ความเห็นทั้งหมด
Inline Feedbacks
ดูความเห็นทั้งหมด

บทความแนะนำ

Flask Python framework โดย สรุป

Flask Python framework + Emmet

สรุป วิธีสร้างเว็บไซต์ด้วยภาษา Python โดยใช้ Flask framework และ การตั้งค่า VSCode เพื่อให้สามารถใช้ Emmet ร่วมกับ Flask framework ได้

Redis บน Debian AWS EC2

Redis บน Debian AWS EC2

ติดตั้ง Redis แบบ Manual บน ระบบปฏิบัติการ Debian ที่อยู่บน EC2 ของ AWS Cloud จะช่วยให้การปรับแต่ง Redis เช่น การเพิ่มพอร์ต ทำได้ง่ายขึ้น

Colorize VIM

Developer Playground: Colorize VIM

ตกแต่ง VIM Editor ให้ดู Colorize ด้วย VIM Plug และมันยังมีประโยชน์ต่อการเขียนโค้ดด้วย เพราะมันจะแสดงข้อมูลที่สำคัญบริเวณขอบล่างของหน้าจอ

0
แสดงความเห็นได้นะx
()
x
Scroll to Top
Share on facebook
Share on twitter
Share on linkedin