通過WordPress和Docker學習Redis CLI基礎知識

通過WordPress和Docker學習Redis CLI基礎知識

Redis 是一種無模式的記憶體鍵值資料儲存,適用於實時應用程式。開發人員可將其用作 NoSQL 資料庫、輔助資料層或計算密集型程序的快取層。

Redis 提供持久儲存,可以快取網站會話狀態和其他資料。將 Redis 用作快取層的應用程式通常會進行一次複雜的資料庫查詢或 API 呼叫,然後快取結果。它可以快速高效地儲存和檢索物件。因此,對於使用更傳統的關係型資料庫伺服器作為主要內容儲存的 WordPress 來說,Redis 是一個絕佳的伴侶。

Redis 命令列介面(CLI)可用於與 WordPress 網站的 Redis 伺服器通訊。使用 Redis CLI(在命令列中以 redis-cli 的形式呼叫),你可以以程式設計方式請求和接收來自 Redis 伺服器的響應,監控在 Redis 例項中執行的命令,檢查例項的延遲,並實時觀察伺服器的狀態。

本教學將向你展示如何將 Redis 與 WordPress 網站整合,並使用 Redis CLI 從終端執行建立、讀取、更新和刪除(CRUD)操作。

使用 DevKinsta 將 Redis 連線到 WordPress

為了將 WordPress 網站連線到 Redis 資料庫,我們使用了 DevKinsta,這是一個免費的一鍵式工具包,用於從本地環境快速啟動、開發和部署 WordPress 網站。

DevKinsta 可以在本地啟動 Docker 化的 WordPress 網站,並提供最新版本的依賴項,包括 Nginx Web 伺服器、PHP 和相容 MySQL 的 MariaDB 資料庫。它還支援 WordPress 的 CLI。

DevKinsta 適用於 Windows、Linux 和 macOS。下載 DevKinsta 時,您可以找到更多有關安裝的資訊。

安裝完成後,使用預設主機棧在本地建立並安裝一個新的 WordPress 網站

提醒:最初啟動 DevKinsta 時,如果您還沒有安裝 Docker Desktop,它會提示您將其作為一個依賴項來安裝。DevKinsta 使用 Docker Desktop 在容器內建立所有 WordPress 本地環境檔案。

DevKinsta 提供三種本地建立 WordPress 網站的選項:使用預設設定的全新網站、使用自定義設定的新網站,以及將託管在 Kinsta 上的現有網站克隆到本地開發環境。

本教學使用第一個選項,使用預設設定和最新版本的 Nginx、PHP、MariaDB 和 WordPress。

完成這些步驟後,您就可以在 DevKinsta 中檢視新網站的儀表板了:

建立新 WordPress 網站後的 DevKinsta 面板

建立新 WordPress 網站後的 DevKinsta 面板。

注意網站路徑。這是包含本地網站檔案和資料夾的目錄。WP Admin 儀表盤連結顯示在右上角。最後,注意網站主機,即指向新開發網站的 URL

您可以開啟 Docker Desktop,列出作為 DevKinsta 專案依賴項執行的所有容器。為此,請單擊左側邊欄頂部的 Containers

Docker Desktop 的 DevKinsta 容器列表

Docker Desktop 的 DevKinsta 容器列表。

現在,您的 WordPress 網站和容器依賴項已經啟動並執行,您可以將 Redis 資料庫連線到您的網站了:

  1. 點選 DevKinsta 中的 “WP Admin” 按鈕,進入 WordPress 管理面板。
  2. 點選左側的 外掛 選項卡。
  3. 點選 安裝外掛,然後搜尋 “Redis Object Cache”。

Redis Object Cache 外掛

在 WordPress 中搜尋 Redis Object Cache 外掛。

單擊外掛旁邊的立即安裝。然後,單擊 “已安裝外掛” 選項卡,確認外掛已啟用。

Redis Object Cache

安裝 WordPress 外掛,包括 Redis Object Cache。

首次啟用時,Redis Object Cache 外掛會報告無法連線到 Redis 資料庫。我們可以通過在 Docker 中建立一個帶有 Redis 例項的容器來解決這個問題。

讓我們開啟終端,建立一個名為 redisnet 的網路容器,在其中執行 Redis 映象:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
docker network create -d bridge redisnet
docker network create -d bridge redisnet
docker network create -d bridge redisnet

現在,以獨立容器的形式在該網路容器中構建並執行 Redis 映象:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
docker run -d -p 6379:6379 --name demo_redis --network redisnet redis
docker run -d -p 6379:6379 --name demo_redis --network redisnet redis
docker run -d -p 6379:6379 --name demo_redis --network redisnet redis

啟動容器映象後,在 Docker Desktop 中驗證 Redis 映象是否已啟動並執行:

執行 demo_redis 映象的 Docker 桌面

執行 demo_redis 映象的 Docker 桌面。

請記住,您的 WordPress 網站是在 Docker 容器中自動啟動的。您可以確認其容器網路名稱和 ID:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
docker network ls
docker network ls
docker network ls

Docker Desktop 中的網路名稱和 ID

Docker Desktop 中的網路名稱和 ID。

上面,devkinsta_network 的網路 ID 的截斷版本是 d1fa155f7a4d 。我們稍後將使用它。

提示:Docker 中網路和容器的 ID 長度為 64 個字元。一般來說,截斷到前 12 個字元的 ID 對於引用來說足夠唯一。要檢視完整的 ID,請在列出 ID 的命令中使用 -no-trunc 開關。

將 Redis 叢集和伺服器連線到本地 WordPress 網站的一種方法是直接連線 Redis 和 DevKinsta 網路。首先,驗證 Redis 的容器 ID。在這裡,我們使用 Docker 命令來列出容器,並使用 -l (最新)開關來顯示最近建立的容器:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
docker ps -l
docker ps -l
docker ps -l

Docker 的 ps 命令生成的容器資訊

Docker 的 ps 命令生成的容器資訊。

在本例中,截斷的容器 ID 顯示為 c3ffc630e44c

在下面的命令中使用您的容器 ID 代替我們的 ID,將您的 Redis 容器連線到 DevKinsta 網路。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
docker network connect devkinsta_network c3ffc630e44c
docker network connect devkinsta_network c3ffc630e44c
docker network connect devkinsta_network c3ffc630e44c

你應該已經成功地將 Redis 容器映像新增到 devkinsta_network 中正在執行的容器列表中。要驗證 Redis 容器的網路 IP 地址,請執行以下命令,將 devkinsta_network ID 替換為在專案中使用 network ls 命令找到的 ID:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
docker inspect d1fa155f7a4d
docker inspect d1fa155f7a4d
docker inspect d1fa155f7a4d

終端顯示 docker inspect 命令的部分輸出

終端顯示 docker inspect 命令的部分輸出。

在上圖中,demo_redis 容器的 IP 地址是 172.172.0.6。在繼續連線之前,請在你的專案中記下這個 IP 地址。

導航到本地計算機上 WordPress 網站的根目錄,也就是 DevKinsta 中顯示的網站路徑。用文字編輯器開啟 wp-config.php 檔案,在自定義配置變數部分新增以下程式碼:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
define('WP_REDIS_CLIENT', 'predis');
define('WP_REDIS_HOST', '172.172.0.6');
define('WP_REDIS_PORT', '6379');
define('WP_REDIS_CLIENT', 'predis'); define('WP_REDIS_HOST', '172.172.0.6'); define('WP_REDIS_PORT', '6379');
define('WP_REDIS_CLIENT', 'predis');
define('WP_REDIS_HOST', '172.172.0.6');
define('WP_REDIS_PORT', '6379');

WP_REDIS_HOST 所使用的 IP 地址,就是你在執行 docker inspect 命令時發現的 demo_redis IP 地址。

這段配置程式碼新增了 Redis 客戶端、主機和埠,這樣外掛就能在與 DevKinsta 相同的 Docker 容器和網路中訪問 Redis 伺服器。

確認外掛已連線並執行:

  1. 在管理儀表板中導航到 WordPress 外掛頁面。
  2. 單擊 Redis 物件快取的設定連結。
  3. 在 “設定” 頁面上,單擊 “Enable Object Cache” 按鈕。

Redis 物件快取

Redis 物件快取是可寫和可訪問的,但需要啟用。

啟用 Redis 物件快取後,其設定頁面將如下所示:

Redis 已連線並正在執行

Redis 物件快取設定頁面顯示 Redis 已連線並正在執行。

啟動 Redis CLI

Redis CLI 工具( redis-cli )與 Redis 伺服器捆綁在一起。你可以在 WindowsmacOSLinux 作業系統上安裝 Redis 伺服器。

不過,我們已經在 Docker 中執行了 Redis,因此可以在 demo_redis 容器中啟動 CLI 工具。

上面,當我們使用 docker ps 命令時,我們知道了執行 Redis 映像的容器的 ID。我們的 ID 是 c3ffc630e44c 。我們可以使用這個截斷的 ID 來定位 demo_redis,並在其中啟動一個命令列 shell:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
docker exec -it c3ffc630e44c /bin/sh
docker exec -it c3ffc630e44c /bin/sh
docker exec -it c3ffc630e44c /bin/sh

現在可以呼叫 redis-cli 工具了:

從 Docker 中的 shell 呼叫 redis-cli

從 Docker 中的 shell 呼叫 redis-cli

你可以 ping 伺服器來測試連線:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
ping
ping
ping

伺服器對 redis-cli 中 ping 的響應

伺服器對 redis-cli 中 ping 的響應。

要使用 Redis 伺服器的 IP 地址和埠連線並測試該連線,請執行以下命令(使用 demo_redis 容器的 IP 地址):

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
redis-cli -h 172.172.0.6 -p 6379 ping
redis-cli -h 172.172.0.6 -p 6379 ping
redis-cli -h 172.172.0.6 -p 6379 ping

通過 Redis 伺服器的 IP 地址和埠向其傳送 ping

通過 Redis 伺服器的 IP 地址和埠向其傳送 ping。

你已經成功連線了本地機器和 Docker 容器上的 Redis 伺服器。

接下來,使用 redis-cli 及其 keys * 命令來顯示資料庫中的所有鍵,以驗證你的 WordPress 網站是否在 Redis 快取中儲存了資料:

使用星號萬用字元搜尋檢索 Redis 資料庫中的所有鍵

使用星號萬用字元搜尋檢索 Redis 資料庫中的所有鍵。

可以看到,一些 WordPress 資料已經儲存到了 Redis 快取中。

Redis CLI CRUD 操作

你可以使用 CLI 工具對 Redis 資料庫執行 CRUD 操作。

讓我們來獲取從之前的 Redis CLI keys * 請求中複製的鍵值。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
get :u.:~8r]mC->Re/gG!&mGU.[{+;]t7o<H~)c*pcU=Lx_Vs{9JkdxkL:X;M-@Y$Svwp:user_meta:1
get :u.:~8r]mC->Re/gG!&mGU.[{+;]t7o<H~)c*pcU=Lx_Vs{9JkdxkL:X;M-@Y$Svwp:user_meta:1
get :u.:~8r]mC->Re/gG!&mGU.[{+;]t7o<H~)c*pcU=Lx_Vs{9JkdxkL:X;M-@Y$Svwp:user_meta:1

Redis 對使用 redis-cli 提出的 "get" 請求的響應

Redis 對使用 redis-cli 提出的 “get” 請求的響應。

讓我們呼叫 redis-cli ,使用 setgetdel 命令來建立鍵/值對、查詢新鍵並刪除它,從而操作 Redis 資料庫的內容:

使用 redis-cli 對 Redis 資料庫進行簡單的 CRUD 操作

使用 redis-cli 對 Redis 資料庫進行簡單的 CRUD 操作。

上圖中,嘗試檢索一個已刪除鍵的值時,返回值為 nil

在使用 Redis CLI 時,還有更多高階操作可用。

小結

Redis CLI 是一種在網站上測試 Redis 命令的簡便方法,然後再將其推送到實時環境中。它還是監控 Redis 例項活動的好方法。

在 Docker 中,Redis 例項將管理資料庫所需的工具(包括 redis-cli )捆綁在一個容器中。

與此同時,DevKinsta 的 Docker 化方法可以輕鬆地在本地機器上開發 WordPress 網站,然後只需點選幾下滑鼠就能將其部署到生產環境中。

評論留言