Redis คืออะไร

Sakul Montha
3 min readNov 16, 2017

--

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
start server redis

ถ้าขึ้นดังรูปข้างบนคือ ท่านสามารถใช้งาน Redis ได้แล้วครับ โดย redis จะ set default port เอาไว้คือ 6379 อย่าเพิ่งปิด cmd หรือ terminal ของท่าน แต่ให้เปิดค้างเอาไว้ก่อน แล้วมาเริ่มกันที่ Tab ใหม่ เมื่อเปิด Tab หรือ new cmd / terminal ขึ้นมาใหม่แล้วให้ท่านใช้คำสั่ง

$ redis-cli
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, value and Get value by key

จากตัวอย่างด้านบน เราทำการ 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"
HSET AND HGET

จะสังเกตุเห็นว่า
ถ้า integer 1 ก็คือ hash นั้น เก็บ field ใหม่
ถ้า integer 0 ก็คือ hash นั้น มี field เดิมอยู่ก่อนแล้ว แต่มีการ update value

อันที่จริงยังมี key อีกหลายตัวที่ไม่ได้ยกตัวอย่างนะครับ ผู้อ่านสามารถเข้าไปดูต่อได้ที่ https://redis.io/commands/

มาใช้ Tools ให้ช่วยในการ lookup กันดีกว่าครับ

Medis — GUI Manager for Redis

Medis

Medis เป็น Tools ตัวนึงเหมือน Navicat, Workbench, SQLDeveloper นั่นแหละครับ แต่มันเอาไว้ใช้กับ Redis

ค่าเริ่มต้น Connect ได้เลยครับไม่ต้อง set อะไร

ถ้าหากท่านทำตามบทความข้างบน เมื่อท่านเข้ามาท่านจะเห็น hashName ดังภาพ

ซึ่งมันแสดงผลเป็น GUI ทำให้การจัดการ เพิ่ม, ลบ, แก้ไข ทำได้ง่าย

สุดท้ายนี้ อยากจะบอกกับท่านผู้อ่านว่า “ถ้าหากอยากล้างข้อมูลทั้งหมดใน Redis” สามารถทำได้โดยใช้คำสั่ง

127.0.0.1:6379> flushall

เพียงเท่านี้ทุกสิ่งทุกอย่างที่ปั้นมาก็จะหายไปในพริบตา….

--

--

Sakul Montha
Sakul Montha

Written by Sakul Montha

Chief Product Officer, a man who’s falling in love with the galaxy.

No responses yet