Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> ฐานข้อมูล

Master Redis: คู่มือเริ่มต้นสำหรับ Ultimate Data Structure Server

Speed และ Flexibility ของ Redis ทำให้เป็น Tool อันทรงพลังสำหรับ Developers ใช้ได้หลายแบบ แม้มักเรียกว่า Key-Value Store แต่ควรอธิบายว่า Data Structure Server มากกว่า เพราะรองรับ 5 Data Structure Types:

  • Strings
  • Hashes
  • Lists
  • Sets
  • Sorted Sets

แต่ละ Structure มี Shared Commands และ Commands เฉพาะ Structure นั้นๆ

Introduction นี้ครอบคลุม Basics การใช้ Redis และ Overview Data Structures จะครอบคลุม Basic Commands บ้าง Redis มี 160+ Commands ขณะเขียน หาเอกสารได้ที่ redis.io/commands

Starting Redis

ใช้ Instance จาก ObjectRocket for Redis หรือ Install Local

Install Local: Download, Extract, Compile:

$ wget https://download.redis.io/releases/redis-2.8.17.tar.gz $ tar xzf redis-2.8.17.tar.gz $ cd redis-2.8.17 $ make

Start Local Instance:

$ src/redis-server

Using Redis

พร้อม Interact Redis ด้วย Built-in Client ObjectRocket for Redis Instance เริ่ม redis-cli ด้วย Hostname, Port, Password:

$ redis-cli -h my-host -p 1234 -a mypassword

Local Instance: Host=localhost, Default Port=6379, No Password Default

$ redis-cli

GET และ SET

ระดับง่ายที่สุด Redis = Key-Value Store Command SET foo bar = Set Value ของ foo เป็น bar ตัวอย่างจาก redis-cli:

redis> SET foo bar OK

อ่านค่า foo ด้วย GET:

redis> GET foo "bar"

EXPIRE และ TTL

ตั้ง Key Expire ในเวลาที่กำหนดด้วย EXPIRE TTL รายงานเวลาคงเหลือก่อน Expire

redis> SET foo bar OK redis> EXPIRE foo 120 (integer) 1 redis> TTL foo (integer) 113

Lists

Feature แตกต่างของ Redis: Value ของ Key เป็น Data Structures ไใช่แค่ Values

สร้าง List 用 LPUSH หรือ RPUSH หาก List มีอยู่แล้ว LPUSH Add Value ไปต้น List RPUSH Add ท้าย List

redis> LPUSH cities "San Francisco" (integer) 1 redis> RPUSH cities "Austin" (integer) 2 redis> LRANGE cities 0 -1 1. "San Francisco" 2. "Austin" redis> SORT cities alpha 1. "Austin" 2. "San Francisco" redis> LPOP cities "San Francisco" redis> LRANGE cities 0 -1 1. "Austin"

SORT + ALPHA = Lexicographically Ascending DESC = Descending RPOP = Pop จากท้าย LPOP = Pop จากหน้า

Sets

Sets คล้าย Lists แต่ Element ซ้ำไม่ได้ ตัวอย่างสร้าง Set รัฐ US เล็กๆ SADD Add Item ถ้ายังไม่มีใน Set (Return 1) มีอยู่แล้ว Return 0 SMEMBERS Return All Items SCARD Return Count SREM Remove Item

redis> SADD states "Vermont" (integer) 1 redis> SMEMBERS states 1. "Vermont" redis> SADD states "Texas" (integer) 1 redis> SCARD states (integer) 2 redis> SADD states "Vermont" (integer) 0 redis> SMEMBERS states 1. "Vermont" 2. "Texas" redis> SADD states "California" (integer) 1 redis> SMEMBERS states 1. "Vermont" 2. "Texas" 3. "California" redis> SREM states "California" (integer) 1 redis> SMEMBERS states 1. "Vermont" 2. "Texas"

Hashes

ใช้ Hashes Map String Values ไป Fields ในแต่ละ Key Hash ที่มี Fields น้อย Stored แบบ Space-efficient เก็บ Millions of Objects ใน Small Redis Instance ได้ ตัวอย่าง: Name ของ user:1 = "john racker" ด้วย HSET HGET ดึง Name HGETALL Return All Keys/Values

redis> HSET user:1 name "john racker" (integer) 1 redis> HGET user:1 name "joe racker" redis> HSET user:1 company "objectrocket" (integer) 1 redis> HGET user:1 company "ObjectRocket" redis> HSET user:1 city "austin" (integer) 1 redis> HGET user:1 city "austin" redis> HGETALL user:1 1. "name" 2. "john racker" 3. "company" 4. "objectrocket" 5. "city" 6. "austin"

SORTED SETS

Sorted Sets คล้าย Sets (Non-repeating Strings) แต่ทุก Member มี Score เรียงตาม Score Ascending Element เดียวกันอยู่ได้ครั้งเดียว Scores ซ้ำได้

ตัวอย่าง: Add Points Top 5 Teams English Premier League วันที่ 10/23/2014:

redis> ZADD EPL 22 "chelsea" (integer) 1 redis> ZADD EPL 17 "man city" (integer) 1 redis> ZADD EPL 16 "southampton" (integer) 1 redis> ZADD EPL 13 "liverpool" (integer) 1 redis> ZADD EPL 13 "west ham" (integer) 1 redis> ZRANK EPL "chelsea" (integer) 3 redis> ZRANK EPL "liverpool" (integer) 0 redis> ZRANK EPL "arsenal" (nil)

Rank Teams ตาม Points ด้วย ZRANGE:

redis> ZRANGE EPL 0 -1 1) "liverpool" 2) "west ham" 3) "southampton" 4) "man city" 5) "chelsea" redis> ZRANGE EPL 2 3 1) "southampton" 2) "man city"

จำไว้: Sets เรียง Ascending ดู Rank ตาม Points ต้อง用 ZREVRANGE

redis> ZREVRANGE EPL 0 -1 1) "chelsea" 2) "man city" 3) "southampton" 4) "west ham" 5) "liverpool" redis> ZREVRANGE EPL 0 -1 WITHSCORES 1) "chelsea" 2) "22" 3) "man city" 4) "17" 5) "southampton" 6) "16" 7) "west ham" 8) "13" 9) "liverpool" 10) "13"

Southampton เล่นเกม ชนะ ได้ 3 Points ใช้ ZINCRBY Increment Score และ ZREVRANGE ดู Southampton ขึ้น Rank 2 ใช้ ZREVRANK ดู Rank (0-based = Highest Score Rank 0)

redis> ZINCRBY EPL 3 "southampton" "19" redis> ZREVRANGE EPL 0 -1 WITHSCORES 1) "chelsea" 2) "22" 3) "southampton" 4) "19" 5) "man city" 6) "17" 7) "west ham" 8) "13" 9) "liverpool" 10) "13" redis> ZREVRANK EPL "southampton" (integer) 1 redis> ZREVRANGEBYSCORE EPL 25 (15 1) "chelsea" 2) "southampton" 3) "man city"

สัปดาห์หน้า Deep Dive Redis และ Use Cases สำหรับ Versatile Developer Tool นี้ ติดต่อเราถ้ามีคำถามเรื่อง Run Redis หรืออยากเล่าว่าคุณใช้ Redis ใน App Stack อย่างไร