我們都知道 WordPress 的文章、頁面和 WooCommerce 的商品及訂單等全部相關資料,都是儲存在 MySQL 資料庫裡,所以資料庫是非常重要的核心,一但資料庫速度變慢時,就會影響網頁的開啟速度,嚴重時還會讓網站停擺當機,而 Redis 則能夠協助資料庫,避免因為大量查詢而降低效能的問題。


redis wordpress woocommerce

Redis 是什麼?

Redis (Remote Dictionary Server) 是一種使用記憶體儲存資料的資料庫 (NoSQL), 因為記憶體的特性,所以能提供低延遲與高效能的讀取速度,本身也具有資料儲存持久化的技術,非常適合使用在對有大量資料或讀取效能的需求場景。

在本文中,我們將不會介紹 Redis 相關的核心技術,而是希望透過實驗測試,讓讀者能夠直接了解 Redis 能為 WordPress 提升多少效能,若想更深的了解 Redis 或需要安裝教學,我們也整理了一些資料並放在文未下方的參考連結。

測試環境

我們會使用真實的商店做測試,非為了測試而建立的網站,WordPress 與 MySQL 為兩台獨立的伺服器,而 Redis Sever 則是安裝在和 MySQL 同一台伺服器上,和資料庫一起共用資源。

商店有啟用的外掛包含 WooCommercce 共 22 個,其中還有 3 個較佔效能的 WPML 外掛,全站商品數量共 61262 件,而分類下最多的商品數為 5503 件,本次測試使用分類下最多商品為條件,比較使用了 Redis 前後的頁面開啟速度的差異。

現有資料庫大小:

$ wp db size --tables --human-readable

+----------------------------------+--------+
| Name                             | Size   |
+----------------------------------+--------+
| wp_postmeta                      | 562 MB |
| wp_posts                         | 55 MB  |
+----------------------------------+--------+

測試結果

使用 WEB PAGE TEST 對同一個有快取的頁面測試 TTFB,因為 First Byte 就幾乎等同於網頁產生完成的回應時間。

無 Redis : 0.18 秒
有 Redis : 0.228 秒

使用 Query Monitor 測試 Database Query Time (向資料庫查詢的總時間)。

無 Redis : 1.1041 秒
有 Redis : 0.1902 秒
wordpress query time
Query Monitor – 無 Redis
wordpress query time
Query Monitor – 有 Redis

使用 Redis 的效果

由測試結果得知,使用 Redis 可以儲存 PHP 向 MySQL 查詢的資料,當下次同一個頁面再被訪問時,PHP 則會優先向 Redis 提取資料,藉此提升頁面的完成速度,減輕資料庫的負擔; 但對於面頁本身有快取的話就幫助不大了,因為頁面快取已經省略了 PHP 和 MySQL 溝通的工作,預先將完整的頁面儲存成靜態檔,等待訪客請求及下載。

怎麼使用 Redis?

1. 伺服器本身若有提供 Redis 服務,只要安裝 Redis 外掛及完成連線設定,就能開始使用 Redis。
2. 自行建置的伺服器,需要安裝 PHP Redis 和 Redis Server,PHP Redis 的功能是讓 PHP 與 Redis Server 溝通,這樣在 WordPress 安裝 Redis 外掛之後,才能將資料儲存在 Redis Server 上。
3. 使用 Amazon ElastiCache 之類的服務,可選單機 (Node) 模式、高可用 (High Availability) 或是叢集架構 (Cluster),讓 Redis Server 有更穩定的商用品質。

什麼網站建議使用 Redis?

以經驗來說,只要是頁面不做快取或是無法做快取的網站,都很適合使用 Redis,例如線上教學網站、影音網站、論壇網站或是 WooCommerce 電商,尤其當有活動需要大量頻繁讀寫資料庫時,就能夠完全發揮 Redis 的特性。

然而 Redis 的設定也有些細節需要注意,例如記憶體的需求量與使用量的限制,記憶體佔滿後的處理方式還有如何制訂更新與清除的措施,最後依網站的向性做適當的調整,就能幫助 WordPress 的效能提升到另一個新層次。

參考連結:

Redis
Redis 維基
Redis Object Cache
Object Cache Pro
How To Install and Secure Redis on Ubuntu 20.04