Redis + Raspberry PI ตอนที่ 1

Redis คืออะไร ?

Redis ถูกพัฒนาโดย Salvatore Sanfillippo (http://invece.org/)  อ้างอิงจากเว็บ  http://redis.io/ ได้นิยาม Redis ไว้ดังนี้

  "Redis is an open source, BSD licensed, advanced key-value cache and store. It is often referred to as a data structure server since keys can contain strings, hashes, lists, sets, sorted sets, bitmaps and hyperloglogs."


 ผมจับประเด็นตรงที่ Redis เป็นระบบฐานข้อมูลแบบหนึ่งที่ใช้โครงสร้างข้อมูลแบบ key-value ซึ่งอาจมองว่าเป็น NoSQL แบบหนึ่ง และโครงสร้างแบบนี้ก็สอดคล้องกับโครงสร้างข้อมูลแบบ dictionary ในภาษา Python ด้วย

ชุดของบทความนี้จะกล่าวถึงเรื่องการใช้ภาษา Python กับ Redis ในบางเรื่องเท่านั้นครับ โดยมุ่งไปที่การใช้งานในแนว Internet of Things  และแน่นอนว่า Raspberry PI จะเป็นอุปกรณ์ที่ผมใช้ในการทดสอบโปรแกรมครับ โดยมีสภาพแวดล้อมการทำงานดังนี้

1. Raspberry PI B2
2. ระบบปฏิบัติการ Raspbian
3. Python 2.7 
4. Internet connection

ติดตั้ง Redis Server

การติดตั้ง Redis บน Rasbperry PI จะเหมือนกับการติดตั้งบน PC ครับ

$ sudo apt-get install redis-server

หลังการติดตั้งสมบูรณ์ จะได้

redis-server
redis-sentinel
redis-cli
redis-benchmark

ตัวติดตั้ง Redis จะทำการสร้าง startup script ให้โดยอัตโนมัติและเก็บไว้ที่ /etc/init.d/redis-server และ configuration file ไว้ที่  /etc/redis/redis.conf ซึ่งทำให้ Redis จะถูกเรียกใช้งานเองทุกครั้งที่เรา start อุปกรณ์ แต่เราสามารถทำการ start/stop การทำงานของ Redis server ด้วยตัวเอง ดังนี้

$ sudo /etc/init.d/redis-server stop|start|restart 

หรือ

$ sudo redis-server /etc/redis/redis.conf


แนะนำ virtualenv


ก่อนจะเข้าไปสู่เรื่องการติดตั้ง Python library ผมอยากจะแนะนำเรื่องการใช้งาน virtualenv สักหน่อยครับ virtualenv มีประโยชน์มากในกรณที่เราต้องทำงานกับ Python หลายโครงงาน ซึ่งทำให้เรามีโอกาสที่จะติดตั้ง library ที่อาจมีปัญหาต่อกันระหว่างโครงงานได้ เช่น บางโครงงานอาจจะต้องการ library รุ่นเก่ากว่าอีกโครงงานหนึ่ง เป็นต้น การใช้ virtualenv จะช่วยลดปัญหาแบบนี้ได้ โดยการสร้างพื้นที่เฉพาะของแต่ละโครงงานไว้ การติดตั้ง library ของแต่ละโครงงานจะไม่ซ้ำซ้อนกัน หากมี library ใดที่เราเห็นว่าน่าจะใช้แบบรวมกับโครงงานอื่นได้ ก็ทำได้โดยการสำเนาไปไว้ในพื้นที่ของโครงงานนั้น ๆ





เริ่มต้นด้วยการติดตั้ง pip

pip เป็น utility สำหรับติดตั้ง package ต่าง ๆ ในภาษา Python เราสามารถติดตั้งได้โดย

$ sudo apt-get install python-pip


ติดตั้ง virtualenv


$ sudo pip install virtualenv

สร้าง virtualenv 

เราต้องสร้าง virtualenv สำหรับโครงงานของเราก่อนที่เราจะติดตั้ง library สำหรับ redis ครับตามขั้นตอนดังนี้

1. สร้างพื้นที่สำหรับโครงงาน


 virtualenv <ชื่อโครงงาน >  เช่น

$ virtualenv my-redis

ผลที่ได้คือจะมีการสร้าง directory ชื่อ my-redis ขึ้นมา พร้อมกับสำเนาไฟล์ที่จำเป็นในการทำงานมาไว้ใน my-redis

2. Activate

ก่อนการใช้งาน virtualenv  เราต้องทำการ activate มันเสียก่อนครับ ด้วยคำสั่ง source

source <path to project>/bin/activate  เช่น

$ source /home/pi/my-redis/bin/activate

ผลที่ได้จากคำสั่ง เราจะเห็น prompt เปลี่ยนไปอยู่ในรูปแบบ

(project name) username@host name   เช่น

(my-redis)pi@raspberry ~/home/pi/my-redis


หมายเหตุ 

1) ยกเลิกการใช้งาน virtualenv ด้วยการใช้คำสั่ง

$ deactivate


2) ในกรณีที่ไม่ต้องการใช้งาน virtualenv ใด ๆ ให้ใช้การลบ directory นั้น เช่น

$ rm -rf my-redic 

 

3. ติดตั้ง python-redis  

เพื่อลดความสับสน เราควรย้ายเข้าไปในโครงงานของเราก่อนทำการติดตั้ง

$ pip install redis



มาถึงขี้นตอนนี้แล้ว เราจะได้สภาพแวดล้อมที่พร้อมสำหรับการทำงานกับ Redis ด้วยภาษา Python แล้ว ครับ ตอนต่อไปเราจะเข้าสู่เรื่องการสร้างระบบ instant messaging อย่างง่ายกัน [ต่อไป]



ความคิดเห็น