前言
在我們的印象中redis命令好像都是一個個單條進行執行的,
如果有人問你如何批量執行Redis命令,你能回答的上嗎,或者說能答出幾種方式呢?
最容易想到的是Redis的一些批量命令,例如MGET
今天小許就這個問題給大家總結一下!
圖片
Redis命令執行過程
在了解批量執行有哪些方式之前,我們簡單回顧下Redis命令執行的過程:
圖片
為什么需要批量執行命令呢?
在了解批量執行命令有哪些方式之前,我們先簡單整理下【批量執行命令】比【執行多個單Redis命令】能帶來哪些好處!
通過批量執行命令好處如下:
- • 提高命令執行效率:減少網絡延遲,提高Redis服務器的響應速度
- • 簡化客戶端邏輯:將多個命令封裝成一個操作,簡化客戶端處理邏輯
- • 提升事務性能:可以保證一組命令在同一時間內執行,提高事務的性能
圖片
你看單個執行命令每次都需要發送進行網絡傳輸,同樣多的執行,批量執行可以有效減小網絡開銷,減少 RTT(往返時間)。
批量執行命令的方式
有以下四種常見批量執行命令的方式:
1. Redis原生命令:例如 MSET、HMGET、HMSET、SADD
2. pipeline(管道)
3. Lua腳本
4. Redis事務
圖片
我們來給每種方式簡單舉個栗子,然后看看有什么需要注意的地方!
原生批量命令
Redis的原生命令就支持批量命令的操作,比如:HMSET、HMGET、SADD。
其實嚴格來說上述命令不屬于批量操作,而是在一個指令中處理多個key,我們來看下具體該如何使用。
String字符串
MSET:設置一個或多個指定 key 的值
MGET:從一個或多個指定的key中獲取值
MSET key value [key value ...]
MGET key [key ...]
Hash哈希
操作哈希類型時,使用HMSET和HMGET命令分別設置和獲取多個字段及其值
HMSET:將一個或多個 field-value 對設置到指定哈希表中
HMGET:從指定指定哈希表中一個或者多個字段的值
HMSET key field value [field value ...]
HMGET key field [field ...]
Sorted Set 有序集合
SADD可以將多個元素添加到有序集合
SADD key member [member ...]