Redis - 高流量系統不能或缺的資料庫!安裝教學!

今天介紹如何安裝 Redis 資料庫,準確來說它是一種 NoSQL,專門存放 key-value 的資料庫,在實務上最常拿來作快取的用途的資料庫,因為它讀取的速度非常快,之所以那麼快是因為它是在先把資料存在 memory 裡面,才能存取如此得快。

因此其實在 Redis 的預設設定,它會自動將記憶體資料,保存到硬碟的 dump.rdb 檔案。當 redis 重開時,它會將硬碟 dump.rdb 資料拷貝到記憶體中。

RDB 的預設自動條件如下 :

  • 900 秒內有 1 個改動。
  • 300 秒內有 10 個改動。
  • 60 秒內有 10000 個改動。

之所以這樣設計是因為寫入硬碟會花費較多時間,透過這樣的方式才能使得 Redis 能如此高效,常常是高流量的系統不可或缺的角色,當然這樣的保存資料的方式會帶出缺點:資料有可能會不見

所以通常 Redis 不應該放敏感資料,同時你系統的 RDBMS 理論上會有與 Redis 的相同資料存在,一個簡單的想法就是當 Redis 資料不見,去 RDBMS 撈取資料在重新放入 Redis,之後拿資料優先去 Redis 拿,提升讀取效率。

當然這有很多值得思考的空間,之後再發文探討。

Ubuntu 安裝 Redis 教學

輸入以下指令從原始碼安裝:

1
2
3
4
wget http://download.redis.io/releases/redis-5.0.7.tar.gz
tar xzf redis-5.0.7.tar.gz
cd redis-5.0.7
make

當 make 完後,會在 redis-5.0.7 資料夾裡面看到 src 資料夾

啟動 Redis Server:

1
./src/redis-server

同時 src 裡面會有 redis-cli 檔案,可以與 redis-server 進行互動,進入 redis-cli:

1
./src/redis-cli

指令測試~

1
2
3
4
127.0.0.1:6379> set foo bar
OK
127.0.0.1:6379> get foo
"bar"

簡單的 set 跟 get 指令示範。

Ubuntu 設定 Redis 密碼

安裝完 Redis 後,預設是不會設定密碼就可以存取 Redis 資料庫的,但這樣並不安全,因此會有需要設定密碼的需求,基本上 Redis 設定密碼主要分兩種方式。

命令設定密碼

在 redis-cli 上面透過指令設定密碼:

1
127.0.0.1:6379> config set requirepass <password>

這樣的方式並不是永久的,也就是說當你重啟 Redis-Server 後,密碼又不見了。

在 conf 檔案設定密碼

也就是在 Redis 的配置文件設定密碼,因為 Redis-Server 會去讀取配置文件的設定,所以這樣是最好的。

而配置文件位置在:/redis-5.0.7/redis.conf

然後在檔案裡面找:

1
2
3
4
5
# Warning: since Redis is pretty fast an outside user can try up to
# 150k passwords per second against a good box. This means that you should
# use a very strong password otherwise it will be very easy to break.
#
# requirepass foobared

通常預設的配置檔案,就會找到被註解掉的 requirepass foobared

因此把註解移除,以及把 foobared 換成你想要設定的密碼即可~

接著儲存配置檔案,需要將 redis-server 重啟:

1
2
./redis-cli shutdown
./redis-server

由於設定密碼後,redis-cli 還是可以進入,但是進入後是不能對裡面資料進行操作的,會出現以下的錯誤訊息:

1
(error) NOAUTH Authentication required.

這時候只要輸入:

1
2
127.0.0.1:6379> auth <password>
OK

如果回傳 OK 就是密碼認證成功~接著就能對裡面資料進行操作了。

Windows 安裝 Redis 教學

很遺憾的,Redis 官方並不支援 Windows,原因是微軟曾經有提交分支告知 Redis 官方想要可以在 Windows 下編譯執行,但是被拒絕了,原因是 Redis 底層有用到許多 Linux OS 的特性,如果要額外開發 Windows 太花時間及精力。

好消息是微軟仍有在 GitHub 提供 Redis 版本 3 的載點,但此後就沒有在維護了,而現在 Redis 最新穩定版已經到 5 了,因此如果想要練習 Redis 基礎功能在 Windows 用版本 3 是可以的,但如果真的要 production,還是建議在 Linux 上作測試會比較好。同時也可以用到新功能。

微軟提供的開源載點:https://github.com/microsoftarchive/redis

但其實有人另外 fork 微軟的專案,提供版本 4 的開源載點:https://github.com/tporadowski/redis

選擇哪個都可以,但是這種速度一定會不如 Redis 官方,但是作為練習開發用還是可以的。

以下介紹微軟載點的安裝過程:

只要去 GitHub 那邊選 release,找 msi 檔案,即可使用圖形化安裝。

很簡單,就不多加解釋了~

當安裝完後,Redis 服務就會直接開啟了,可以去工作管理員 => 服務那邊確定:

如果沒啟動,注意 Redis 預設吃的 port 是 6379,看有沒有衝突到其他應用 APP。

至於使用方式,一樣在 redis 安裝路徑下有 redis-cli.exe 檔案,對它進行操作即可~

如何關閉或開啟 Redis Server

移到安裝 redis 的路徑下,並輸入以下指令

1
2
3
4
# 開啟服務
redis-server --service-start
# 暫停服務
redis-server --service-stop

設定 Redis 密碼

至於設定密碼方式如同前面 Ubuntu 的設定一樣,至於在 Windows,redis.conf 檔案叫做 redis.windows-service.conf,路徑在 redis 安裝目錄下。如果更改 redis 配置檔案後,記得存檔後重啟 redis 就可以了。

總結

我認為想當好一個 Backend Developer,基本要求你需要專精一個 RDBMS、一個 Backend Framework、Redis、MQ Server。Redis 絕對是當一個系統大起來後,需要知道的角色,所以熟悉其應用情境是很重要的。

之後在寫文章關於 Redis 好用的 GUI 管理工具,及其應用情境分析!