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 | wget http://download.redis.io/releases/redis-5.0.7.tar.gz |
當 make 完後,會在 redis-5.0.7 資料夾裡面看到 src 資料夾
啟動 Redis Server:
1 | ./src/redis-server |
同時 src 裡面會有 redis-cli 檔案,可以與 redis-server 進行互動,進入 redis-cli:
1 | ./src/redis-cli |
指令測試~
1 | 127.0.0.1:6379> set 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 | # Warning: since Redis is pretty fast an outside user can try up to |
通常預設的配置檔案,就會找到被註解掉的 requirepass foobared
因此把註解移除,以及把 foobared 換成你想要設定的密碼即可~
接著儲存配置檔案,需要將 redis-server 重啟:
1 | ./redis-cli shutdown |
由於設定密碼後,redis-cli 還是可以進入,但是進入後是不能對裡面資料進行操作的,會出現以下的錯誤訊息:
1 | (error) NOAUTH Authentication required. |
這時候只要輸入:
1 | 127.0.0.1:6379> auth <password> |
如果回傳 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 | # 開啟服務 |
設定 Redis 密碼
至於設定密碼方式如同前面 Ubuntu 的設定一樣,至於在 Windows,redis.conf 檔案叫做 redis.windows-service.conf,路徑在 redis 安裝目錄下。如果更改 redis 配置檔案後,記得存檔後重啟 redis 就可以了。
總結
我認為想當好一個 Backend Developer,基本要求你需要專精一個 RDBMS、一個 Backend Framework、Redis、MQ Server。Redis 絕對是當一個系統大起來後,需要知道的角色,所以熟悉其應用情境是很重要的。
之後在寫文章關於 Redis 好用的 GUI 管理工具,及其應用情境分析!