分享一個Redis自帶的壓測工具:redis-benchmark

2023-10-19 12:03:12

前言

今天給xdm分享一個Redis自帶的壓測工具:redis-benchmark

介紹

redis-benchmark 是一個用於測試 Redis效能的基準測試工具,可以幫助開發人員評估和比較 Redis 在不同設定或負載情況下的吞吐量和延遲。

使用 redis-benchmark 可以執行多種型別的基準測試,例如:

  • SET/GET 操作測試:通過執行 SET 和 GET 命令來測試 Redis 的讀寫效能。
  • 並行連線測試:模擬多個並行連線同時執行 Redis 操作,測試 Redis 在高並行環境下的效能表現。
  • 多執行緒測試:通過在多個執行緒中執行 Redis 操作來測試 Redis 在多執行緒環境下的效能表現。
  • 資料大小測試:通過測試不同資料大小的操作來評估 Redis 在處理不同資料量時的效能表現。

redis-benchmark 提供了豐富的設定選項,可以控制並行連線數、資料大小、執行命令的型別等。測試結果包括每秒執行的命令數、平均延遲等指標,可以幫助開發人員優化 Redis 設定和應用程式設計,獲得更好的效能。

範例

1、啟用100個並行,發100000個請求。

redis-benchmark -h 127.0.0.1 -p 6379 -c 100 -n 100000

  • -h 127.0.0.1:指定 Redis 伺服器的主機地址為 127.0.0.1,即本地主機。
  • -p 6379:指定 Redis 伺服器的埠號為 6379,預設情況下 Redis 使用 6379 埠。
  • -c 100:指定並行連線數為 100,即同時並行地執行操作。
  • -n 100000:指定執行操作的總次數為 100,000 次。

如圖所示,1.27秒就完成了100000次請求,每秒78802的吞吐量,說明Redis本身的效能就非常好。

這是最常用的命令,可以評估 Redis 在指定條件下的並行處理能力和效能表現。


2、指定主機地址、埠號和資料庫編號測試Redis範例的效能

redis-benchmark -h 127.0.0.1 -p 6379 -q -d 100

  • -h 127.0.0.1:指定 Redis 伺服器的主機地址為 127.0.0.1,即本地主機。
  • -p 6379:指定 Redis 伺服器的埠號為 6379,預設情況下 Redis 使用 6379 埠。
  • -q:指定以靜默模式執行基準測試,只輸出總結結果,不顯示每個操作的詳細資訊。
  • -d 100:指定要測試的資料庫編號為 100。預設情況下 Redis 使用 0 號資料庫。

如圖所示,每秒的qps是7萬多,效能很高。


3、執行100,000次測試 SET 和 LPUSH 命令的效能

redis-benchmark -t set,lpush -q -n 100000


4、執行100,000次測試Lua指令碼的效能

redis-benchmark -n 100000 -q script load "redis.call('set','foo','bar')"

  • -t set,lpush:指定要執行的命令型別。在本例中,將同時執行 SET 和 LPUSH 命令,即將鍵值對設定到 Redis 中,並將元素推入列表。
  • -q:指定以靜默模式執行基準測試,只輸出總結結果,不顯示每個操作的詳細資訊。
  • -n 100000:指定執行操作的總次數為 100,000 次。
  • -n 100000:指定執行操作的總次數為 100,000 次。在本例中,將執行 100,000 次 script load 命令。
  • -q:指定以靜默模式執行基準測試,只輸出總結結果,不顯示每個操作的詳細資訊。
  • script load "redis.call('set','foo','bar')":指定要執行的命令內容。在本例中,將執行 script load 命令,並將 Lua 指令碼作為引數傳遞給該命令。指令碼內容是 redis.call('set','foo','bar'),表示在 Redis 中執行 SET 命令來設定鍵名為 foo、值為 bar 的鍵值對。

總結

通過 redis-benchmark 的測試結果,你可以獲得qps、平均延遲、錯誤率等效能指標,從而根據需要進行調優和優化,確保Redis在實際生產環境中具有良好的效能和可靠性。

好了,今天的小知識你學會了嗎?


如果喜歡,請點贊+關注↓↓↓,持續分享乾貨哦!