在Linux下安裝Redis Server

因為有安裝Redis伺服器的需要所以寫了這篇,雖然說這個萬物Docker時代直接透過Docker下載Redis image就搞定,但考量到效能與細節設定,還是逐步老老實實地把Redis安裝起來比較恰當。

透過Ubuntu安裝Redis Server

  1. 首先,請先擁有一套乾淨的Ubuntu Server,這邊我預設安裝的是Ubuntu Server Minimized,所以後續過程會囉嗦點。

  2. 切換到最高權限。

sudo -i
  1. 對apt-get下指令更新。
apt-get update
  1. 開始安裝Redis,全程YES到底就對了。
apt-get install redis -y
  1. 裝完後立刻執行Linux版本的redis-cli,不用帶任何參數,自動連線到本機127.0.0.1:6379,接著下指令:
> ping
PONG  //系統回應給你的回應
  1. 離開回到Linux作業系統後,輸入service redis-server status來觀察Redis運行狀態:
一大堆資訊中間會出現下列綠色文字:
Active: active (running) since ... ago
  1. 取得nano編輯器,準備後續幹活。
apt-get install nano
  1. 安裝完成後輸入下列指令,進行Redis設定編輯:
nano /etc/redis/redis.conf
  1. 在編輯器中,開啟外部網路監聽:
找到
bind 127.0.0.1 ::1
改成
bind 0.0.0.0

  1. 在編輯器中,開啟密碼連線功能,以防止未知的連線亂入:
找到
requirepass foobared
改成
requirepass SlashviewPassword

  1. 有趣的是透過apt-get安裝Redis後(版本是6.0.16,在redis-cli輸入INFO SERVER就可以查看),他直接幫我註冊成開機後常駐執行,也就是不用再煩惱後續編輯開機運行的設定了。

  2. 至此成為一部Redis Server所需要的功能都處理好了,重啟服務(或者重開機)吧。

systemctl restart redis
或者
service redis-server restart
  1. 安裝並執行HTOP,以方便監視系統CPU、RAM負載狀況。
sudo apt-get install htop -y
htop

下列這張圖表,是我在壓測Redis的時候透過HTOP觀察到的數據:

在Windows下連線至遠端Redis伺服器

接著我們把場景轉換到Windows,並在這環境中針對遠端Redis伺服器下指令:

  1. 下載Windows版本的redis-cli.exe。(點此下載:redis-cli.zip))

  2. 輸入連線參數,連到剛才創建的遠端Redis伺服器:

redis-cli -h XX.XX.XX.XX -p 6379 -a SlashviewPassword

補充:如果你是在Linux下的redis-cli,那麼你無法直接使用-a去帶入密碼,而是要先聯入機器後出現提示符號後,再輸入密碼資訊:

redis-cli -h XX.XX.XX.XX -p 6379
>AUTH SlashviewPassword
通過密碼驗證後,就可以開始輸入指令
  1. 連上去之後就可以開始使用簡單的指令來測試啦!
//設定somekey鍵值資料
set somekey "HelloWorld"

//取得somekey鍵值資料
get somekey

//列出所有的鍵值
keys *

//刪除鍵值
del somekey

//清除資料庫
flushdb

//清除整機
flushall

//立刻釋放記憶體
memory purge

針對Redis進行輕度優化

⚠ 優化設定項目請一律透過編輯redis.conf設定檔案來進行修改。

一個Redis支援多個DB,而每個DB又分別被實作AOFRDB,這導致現代的Redis已經跟傳統印象中的記憶體資料庫不太相同了,透過AOF與RDB實作,就算作業系統當機、斷電,Redis都有能力回復斷電前特定時間的狀態,端看你當時候的備份機制而定。以下是名詞說明:

例如下列指令
set someKey "Hello"
set someKey "Welcome"
set someKey "Test"
最後會被重寫成,因為前面的狀態已經不需要
set someKey "Test"

透過AOFRDB的實作,我們可以稱為這台Redis有能力達成某種程度的持久化,而我們這裡談的優化,就是要把這個持久化拿掉,讓他回到單純的記憶體快取資料庫時代,透過這樣的優化,我們可以讓寫入的時間再進一步縮短,也可以降低Redis伺服器的CPU損耗。

將AOF機制關閉

由於AOF預設是關閉的,我們只要在設定檔中再確認一次即可,確認appendonly no

將RDB機制關閉

由於RDB預設是開啟的,因此我們要在設定檔中將他關閉,找到save XXX X的字眼後將三段都備註起來,新增save ""即可。

原始設定的意思:
save 900 1      //900秒內若有1鍵值變化就快照
save 300 10     //300秒內若有10鍵值變化就快照
save 60 10000   //60秒內若有10000鍵值變化就快照

maxmemory限制執行期的最高記憶體

預設的maxmemory0,這可能導致Redis在運作的時候會淪落到SWAP的窘境,因此我們可以透過maxmemory XXMBmaxmemory XXGB指令來進行最高記憶體耗用的限制。

maxmemory-policy最高記憶體抵達策略

當Redis耗盡記憶體時,我們必須給定策略,不然依據預設值的反應會直接把所有的SET寫入指令都拋Exception返回,可以透過maxmemory-policy XXX來下策略。

其中的策略列表如下,請自行決定:

noeviction(預設值)
當記憶體達到上限時拋出錯誤。

allkeys-lru(多數建議值)
當記憶體達到上限時,根據最近最少使用LRU(Least Recently Used) 刪除Key。

volatile-lru:
與allkeys-lru類似,但只針對TTL Key刪除。

allkeys-lfu:
當記憶體達到上限時,根據最近最不常使用(Least Frequently Used) 刪除Key。

volatile-lfu:
與allkeys-lfu類似,但只針對TTL Key刪除。

allkeys-random:
當記憶體達到上限時,隨機選擇Key刪除。

volatile-random:
與allkeys-random類似,但只針對TTL Key刪除。

volatile-ttl:
當記憶體達到上限時,優先刪除TTL較短的Key。

提醒:

相關連結

Linux Windows RedisServer Install Setup CLI Command AOF RDB