Redis是知名的快取伺服器(Cache Server),可以安裝在獨立的電腦上,與Python內建的Cache比較,提供更多的功能及資料結構,更提供佇列(Queue),可以建構非同步的服務,進一步提升系統效能。
官方網頁提供各種平台的安裝說明,其中WIndows作業系統有3種方式:
為模擬在獨立的電腦上運作,因此筆者採用WSL安裝,安裝指令如下:
curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
sudo apt-get update
sudo apt-get install redis
以下內容主要是參閱官方文件。
sudo service redis-server start
sudo service redis-server stop
redis-cli
ping
(base) root@bigpc:/mnt/c/Users/xxx# redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379>
SET mykey "Hello\nWorld"
GET mykey
執行結果:會得到【Hello\nWorld】訊息。
關閉CLI:
quit
sudo service redis-server stop
sudo service redis-server start
GET mykey
執行結果:仍會得到【Hello\nWorld】訊息,表示儲存至redis的訊息會落地(Persistent),不會遺失,這非常重要,意味系統不會因為redis當機,造成交易訊息消失,導致嚴重後果。
要顯示所有key:
KEYS *
1) "foo"
2) "mykey"
3) "user-session:123"
DEL mykey
FLUSHALL
(empty array)
Redis強項是支援許多種資料結構,包括:
完全支援各種應用系統的需求,非常令人讚賞。
由於篇幅關係,我們只介紹清單(List),因為它實務上非常有用,可以實現queue/stack機制,建構非同步服務,適合瞬間會湧進大量訂單或詢問的行業使用。
清單(List)操作指令包括:
以下同樣使用CLI指令測試。
LPUSH bikes:repairs bike:5
(integer) 1
LPUSH bikes:repairs bike:2 bike:10
(integer) 3
LPOP bikes:repairs
RPOP bikes:repairs
RPOP bikes:repairs 10
LPUSH bikes:repairs bike:1 bike:2
# CLI回應:(integer) 2
# 從bikes:repairs的前面(LEFT)移出1筆資料,並填入bikes:finished前面
LMOVE bikes:repairs bikes:finished LEFT LEFT
# CLI回應:"bike:2"
LRANGE bikes:repairs 0 -1
# CLI回應:"bike:1"
LRANGE bikes:finished 0 -1
# CLI回應:"bike:2"
BLPOP bikes:finished bikes:repairs 0
1) "bikes:finished"
2) "bike:2"
BLPOP list1 list2 list3 2
(nil)
(2.05s)
更多的指令用法可參閱【Redis lists】。
List實務應用的場景包括:
開發應用系統的目標不只要求正確性,也要追求穩定性及高效能,本篇介紹的Redis cache server入門,正是提升系統效能的有效方法,下一篇要進一步討論Python/Django如何使用Redis API,在應用系統中使用cache。