確保服務穩定 Redis 上線之前應該做的事

在互聯網行業大多數的應該系統都是分步式系統。並且爲了優化系統,在架構設計的時候大多數都引入了緩存中間件 – Redis。相對於 memcache 緩存中間件只支持字符串類型, Redi 擁有更多的數據類型。

  • string:字符串是一種基本的數據類型,用於保存 key/value 類型的數據
  • hash:哈希是一個 string 類型的 field 和 value 的映射表,hash 特別適合用於存儲對象
  • list:列表是簡單的字符串列表,按照插入順序排序。你可以添加一個元素到列表的頭部(左邊)或者尾部(右邊)。一個列表最多可以包含 232 - 1 個元素 (4294967295, 每個列表超過40億個元素)
  • set:集合是 String 類型的無序集合。集合成員是唯一的,這就意味着集合中不能出現重複的數據。
  • sorted sets:有序集合和集合一樣也是string類型元素的集合,且不允許重複的成員。

一般情況下 Redis 可用於使用於以下應用場景

  • 緩存
  • count – 計數
  • 展示最近、最熱、點擊率最高、活躍度最高等等條件的 Top List
  • 用戶最近訪問記錄也是 Redis List 很好的應用場景
  • 通過 List 和 lpop 及 lpush 接口進行隊列的寫入與消費
  • Redis 的 Lua 的功能擴展實際給 Redis 帶來了更多的應用場景,可以編寫若干 command 組合作爲一個小型的非阻塞事務或者更新邏輯
  • Redis 提供的主從數據同步功能,其實是對 cache 的一個強有力功能的擴展

Redis 在系統中有這麼多的就用場景那麼在上線之前我們應該對 Redis 進行性能測試,這樣才能讓 Redis 在不同的服務器上能夠更好的爲我們的服務服務。

在這裏插入圖片描述
在我們 Redis 安裝成功之後,在 ${redis_home}/src 目錄中一般會包含以下命令:

  • redis-server:redis 服務器啓動命令
  • redis-cli:redis 連接連接服務器的客戶端命令
  • redis-benchmark:redis 性能檢測命令

其它的我們暫時不討論,今天主要的討論的就是 redis-benchmark 這個 redis 性能檢測命令。我們輸出redis-benchmark --help,就可以查看它的幫助命令。並且它還會給我們一些舉例:
在這裏插入圖片描述
裏面的單詞比較簡單我就不做過多介紹了,下面就以我的 mac 爲例爲大家舉例幾個比較常用的檢測,以下就是我的電腦配置:

在這裏插入圖片描述
下面就爲大家舉例如何使用 Redis 做性能壓力測試:

1 所有數據的壓力測試

可以使用以下命令對 Redis 所有的數據類型做壓力測試:

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

這個命令的意思:檢測服務器 127.0.0.1:6379 ,100 個併發連接,100000 個請求,檢測服務器性能。

在這裏插入圖片描述
控制檯會打印以上信息主要包括以下幾個點:

  • 需要壓力測試的命令
  • 100000 個命令執行時間所佔的百分比
  • 每秒鐘可以處理多少個請求

2、固定數據大小的測試

測試存儲大小爲 100 kb 的數據包的性能

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

以下是測試結果:
在這裏插入圖片描述
大多數每秒處理數據在 10 萬以上。哈哈,看來我的電腦性能還不錯。

3、針對特定命令測試

在大多數系統當中,我們只會使用到比如 get/set 的命令,那麼我們在做性能測試的時候就只需要對 get/set 命令進行性能測試就可以了。

redis-benchmark -h 127.0.0.1 -p 6379 -t set,get -n 100000 -q

以下就是測試結果:
在這裏插入圖片描述
在控制檯只會打印 get/set 命令每秒鐘能夠處理多少個請求。

4、利用 Lua 腳本測試

Redis 在做性能壓力測試的時候,同樣也可以使用 Lua 腳本。

redis-benchmark -h 127.0.0.1 -p 6379 -n 100000 -q script "redis.call('set', 'foo', 'bar')"

上面的測試目的只是測試某些數據的存儲性能 。

以下就是控制檯的打印:

在這裏插入圖片描述

當然這裏只是羅列了幾個場景,大家可以根據自己的業務場景進行 Redis 的性能壓力測試。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章