REDIS

首先安裝 Redis 環境

Download

下載Redis壓縮,解壓縮後,make執行安裝

wget http://download.redis.io/releases/redis-4.0.10.tar.gz
tar xzf redis-4.0.10.tar.gz
cd redis-4.0.10
make

啟動redis server

src/redis-server

啟動 redis clien

src/redis-cli

接著就能測試新增及取得一筆資料

> set name helloworld
OK
> get name
"helloworld"

常用指令

新增 SET 取得 GET

在測試新增及取得資料時,已經有使用過 SET 以及 GET 的方法

在 SET 資料時,可以透過冒號 : 來輔助設計key

例如,建立 admin 相關資料時,可以這樣做

set admin:name adam
set admin:id 1
set admin:phone 0912345678

get admin:name
get admin:id
get admin:phone

DEL INCR 增減數值

透過 DEL, INCR 來針對數值遞增或遞減

SET num 100

INCR num
101
INCR num
102
DEL num
101
DEL num
100

EXPIRE 過期

透過EXPIRE來設定過期時間,自動清除指定KEY

例如這裡設定在30秒後清空指定Key

SET tmpname Hello
EXPIRE tmpname 30

TTL 查詢過期時間

如果key被設定EXPIRE

可以透過TTL查詢剩餘秒數

-2 則表示此key已經不存在 -1 則表示此key不會過期

> set tmpname hello
> expire tmpname 10
(integer) 1
> TTL tmpname
(integer) 7
> TTL tmpname
(integer) 1
> TTL tmpname
(integer) -2

複式資料結構 - List

Redis支援複式資料結構(complex data structures)

首先開始介紹其中的 List

可以透過 RPUSH, LPUSH, LLEN, LRANGE, LPOP, RPOP 來增加新值

RPUSH 可以在List末端新增值 LPUSH 可以在List前端新增值 LLEN 會返回List長度 LPOP 會移除第一個值,並返回值的內容 RPOP 會移除最後一個值,並返回值的內容

複式資料結構 - SET

SET 可以用來設定資料集合

有這些指令可以使用 SADD, SREM, SISMEMBER, SMEMBERS, SUNION

SADD 可以用來增加值 SREM 可以用來減掉值 SISMEMBER 可以檢查集合是否包含指定值,1:表示有 0:表示無

> SISMEMBER dictionary a
(integer) 1

SMEMBERS 返回此集合所有成員

> SMEMBERS dictionary
1) "b"
2) "a"

SUNION 可以結合多的個集合,返回所有成員

> SMEMBERS keybook
) "m"
2) "a"
3) "y"
> SMEMBERS dictionary
1) "b"
2) "a"
> SUNION keybook dictionary
1) "b"
2) "a"
3) "m"
4) "y"

複式資料結構 - Sorted Sets

雖然集合可以讓資料有更多層面的方式進行儲存,但是無法排序以及在許多情況下無法運作得很好

因此在Redis 1.2 之後就開始推薦Sorted Sets

Sorted Sets 用法與Set非常類似

但是多了一個score參數,可以用來對集合內的成員進行排序

> SISMEMBER dictionary a
(integer) 1
> ZADD zdb 3 c
(integer) 1
> ZADD zdb 2 b
(integer) 1
> ZADD zdb 4 d
(integer) 1
> ZADD zdb 1 a
(integer) 1
> ZADD zdb 5 e
(integer) 1
> ZRANGE zdb 2 4
1) "c"
2) "d"
3) "e"

複式資料結構 - Hashes

雖然透過 Set 或 Sorted Sets 已經可以將資料處理得很好

但是,Hashes可以處理更多種資料類型

例如,針對會員的資料,可以用物件管理的方式來儲存

HMSET 一次設定會員基本資料

HMSET user:988 name Adam email adam@example.com phone 0999999999

HSET 分批個別設定

HSET user:988 name Adam
HSET user:988 email adam@example.com
HSET user:988 phone 0999999999

HGET 取得指定的資料

HSET user:988 name

"Adam"

HGETALL 一次取得所有資料

HGETALL user:988

1) "name"
2) "Adam"
3) "email"
4) "adam@example.com"
5) "phone"
6) "0999999999"

HINCRBY 遞增

> HSET user:988 visits 10
(integer) 1
> HINCRBY user:988 visits 1
(integer) 11
> HINCRBY user:988 visits 10
(integer) 21
> HDEL user:988 visits 
(integer) 1
> HINCRBY user:988 visits 10
(integer) 10
> HINCRBY user:988 visits 1
(integer) 11