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