Redis คืออะไร
Redis เป็น open source ตัวนึง อยู่ในตระกูลจำพวก NoSQL ซึ่งเก็บข้อมูลใน memory ง่าย ๆ คือ เก็บข้อมูลใน RAM นั่นเอง
หลายคนอาจจะเข้าใจผิดคิดว่า Redis เป็น database จริง ๆ แล้วไม่ใช่นะครับ มันคือ in-memory data structure store
ด้วยเหตุเบื่องต้นที่ว่า มันเก็บของอยู่ใน RAM จึงทำให้มันได้เปรียบเรื่องความเร็ว ทั้ง Read, Write, Update หรือ Delete โดยส่วนมากจะนิยมใช้ Redis ในการเก็บข้อมูล ที่ไม่ใช่ core หลักของการเก็บข้อมูล หรือ ทำพวก temp หรือ cashing ต่าง ๆ ให้เข้าถึงไว ๆ
หลักการของมัน มีเพียงแค่ “type” กับ “value” ก็ตามชื่อเลยครับ “type” ก็เก็บ “type” ส่วน “value” ก็เก็บค่าต่าง ๆ ตามต้องการ ซึ่งก็จะมี “type” ให้เก็บอยู่หลายแบบเช่น string, lists, hashes, sets ซึ่งเราต้องประกาศบอกมันก่อนว่า “type” ที่จะเก็บเป็น structure แบบไหน
ตัวอย่าง เราบอกว่าจะประกาศ “type string” มันก็จะมีแค่ “name” กับ “value”
หากเราประกาศ “type hash” มันก็จะมี “name”, “key” และ “value” เป็นต้น
เอา redis มาใช้แทน mssql, mysql, oracle sql ดีมั้ย ตอบเลยว่าไม่ควรครับ เอาไปใช้แค่บางอย่างพอ
ทำไมเราไม่ควรนำ Redis มาใช้แทนพวก database เจ้าต่าง ๆ ทั้งหมด นั่นก็เพราะอย่างที่บอกว่า Redis เก็บข้อมูลบน RAM นั่นหมายความว่า ถ้า ดับ หรือ restart หมายความว่าทุกอย่างจะหายไปครับ
มาลองใช้งาน Redis กันเถอะ
ขั้นแรกไป download redis กันก่อนที่ https://redis.io/download
จะ download แบบเป็นไฟล์มาลงที่เครื่อง หรือ จะใช้ wget หรือจะ brew install ก็สุดแล้วแต่ท่านจะชอบเลยครับ
$ wget http://download.redis.io/releases/redis-4.0.2.tar.gz
$ tar xzf redis-4.0.2.tar.gz
$ cd redis-4.0.2
$ make
แล้วทำการ start ด้วย command
$ src/redis-server
หากเครื่องท่านมี brew อยู่แล้ว แนะนำให้
$ brew install redis
หากท่านใช้ brew ท่านสามารถ ใช้คำสั่ง redis-server ได้เลย
$ redis-server
ถ้าขึ้นดังรูปข้างบนคือ ท่านสามารถใช้งาน Redis ได้แล้วครับ โดย redis จะ set default port เอาไว้คือ 6379 อย่าเพิ่งปิด cmd หรือ terminal ของท่าน แต่ให้เปิดค้างเอาไว้ก่อน แล้วมาเริ่มกันที่ Tab ใหม่ เมื่อเปิด Tab หรือ new cmd / terminal ขึ้นมาใหม่แล้วให้ท่านใช้คำสั่ง
$ redis-cli
หลัก ๆ command ของ redis มีอยู่ไม่มากครับ ที่เราจะได้ใช้บ่อย ๆ คือ set กับ get ไปลองกัน
127.0.0.1:6379> set foo bar
OK
127.0.0.1:6379> get foo
"bar"
จากตัวอย่างด้านบน เราทำการ set key โดยให้ชื่อว่า foo และ มี value คือ bar
เมื่อเราทำการ get foo เราจะได้ value คือ bar ซึ่งเก็บค่าเป็น string นั่นเอง
ตัวอย่างต่อไปเราจะลองเก็บข้อมูลเป็นแบบ hashes โดยจะใช้คำสั่ง HSET กับ HGET
127.0.0.1:6379> HSET hashName field1 "iamgique"
(integer) 1
127.0.0.1:6379> HSET hashName field2 "Hello Redis"
(integer) 1
127.0.0.1:6379> HSET hashName field2 "Hello Medium"
(integer) 0
127.0.0.1:6379> HGET hashName field1
"iamgique"
127.0.0.1:6379> HGET hashName field2
"Hello Medium"
จะสังเกตุเห็นว่า
ถ้า integer 1 ก็คือ hash นั้น เก็บ field ใหม่
ถ้า integer 0 ก็คือ hash นั้น มี field เดิมอยู่ก่อนแล้ว แต่มีการ update value
อันที่จริงยังมี key อีกหลายตัวที่ไม่ได้ยกตัวอย่างนะครับ ผู้อ่านสามารถเข้าไปดูต่อได้ที่ https://redis.io/commands/
มาใช้ Tools ให้ช่วยในการ lookup กันดีกว่าครับ
Medis — GUI Manager for Redis
Medis เป็น Tools ตัวนึงเหมือน Navicat, Workbench, SQLDeveloper นั่นแหละครับ แต่มันเอาไว้ใช้กับ Redis
ถ้าหากท่านทำตามบทความข้างบน เมื่อท่านเข้ามาท่านจะเห็น hashName ดังภาพ
ซึ่งมันแสดงผลเป็น GUI ทำให้การจัดการ เพิ่ม, ลบ, แก้ไข ทำได้ง่าย
สุดท้ายนี้ อยากจะบอกกับท่านผู้อ่านว่า “ถ้าหากอยากล้างข้อมูลทั้งหมดใน Redis” สามารถทำได้โดยใช้คำสั่ง
127.0.0.1:6379> flushall
เพียงเท่านี้ทุกสิ่งทุกอย่างที่ปั้นมาก็จะหายไปในพริบตา….