本文詳細介紹了Redis一些復雜命令的使用,包括Redis事務相關命令,如MULTI
、EXEC
、DISCARD
和 WATCH
,發布訂閱操作命令,如PUBLISH 、SUBSCRIBE 、PSUBSCRIBE ,BitMap操作命令,如SETBIT、GETBIT、BITCOUNT、BITOP,HyperLogLog 操作命令PFADD、PFCOUNT、PFMERGE,GEO命令如GEOADD、GEODIST、GEORADIUS,以及性能測試命令redis-benchmark等等
本文目錄
- 一、Redis 事務
- 二、發布訂閱操作命令
- 三、BitMap 操作命令
- 四、HyperLogLog 操作命令
- 五、Geo操作命令
- 六、benchmark 性能測試
一、Redis 事務
Redis 事務通過 MULTI
、EXEC
、DISCARD
和 WATCH
命令實現。事務可以將多個命令打包,按順序執行,并且在執行過程中不會被其他客戶端的命令打斷。
MULTI
:開啟一個事務。
EXEC
:執行事務中的所有命令
DISCARD
: 取消事務。
WATCH
:用于監視一個或多個鍵,若在事務執行前這些鍵被其他客戶端修改,則事務會被取消。
MULTI
SET name r
GET name
EXEC
以上命令將 SET
和 GET
命令打包成一個事務執行。
二、發布訂閱操作命令
Redis 的發布-訂閱功能允許客戶端訂閱一個或多個頻道,當有其他客戶端向這些頻道發布消息時,訂閱者會收到相應的消息。
PUBLISH <channel> <message>
:向指定的頻道 channel
發布一條消息 message
。
SUBSCRIBE <channel> [channel ...]
:訂閱一個或多個頻道。
PSUBSCRIBE <pattern> [pattern ...]
:訂閱符合指定模式的頻道。
三、BitMap 操作命令
-
設置與獲取位值
SETBIT <key> <offset> <value>
:將鍵key
對應的 BitMap 中偏移量為offset
的位設置為value
(0 或 1)。GETBIT <key> <offset>
:獲取鍵key
對應的 BitMap 中偏移量為offset
的位的值。
-
位統計與操作
BITCOUNT <key> [start end]
:統計鍵key
對應的 BitMap 中值為 1 的位的數量,可指定統計的字節范圍。BITOP <operation> <destkey> <key1> [key2 ...]
:對多個 BitMap 進行位運算(如 AND、OR、XOR、NOT),結果存儲在destkey
中。
-
BitMap 應用場景
BitMap 是一種以位為單位進行存儲的數據結構,每個位只能存儲 0 或 1。在 Redis 中,BitMap 可以使用字符串類型來實現。
應用場景
- 用戶簽到:可以使用一個 BitMap 來記錄用戶的簽到情況,每個位對應一天,簽到則將該位置為 1,未簽到則為 0。
- 在線用戶統計:通過 BitMap 記錄每個用戶的在線狀態,統計在線用戶數量。
四、HyperLogLog 操作命令
HyperLogLog 是一種用于估算集合中唯一元素數量的概率性數據結構,它在占用極小內存的情況下可以對大量數據的基數進行近似統計。
- 命令
PFADD <key> <element> [element ...]
:向 HyperLogLog 中添加一個或多個元素。PFCOUNT <key> [key ...]
:估算 HyperLogLog 中唯一元素的數量,可同時對多個 HyperLogLog 進行統計。PFMERGE <destkey> <sourcekey1> [sourcekey2 ...]
:將多個 HyperLogLog 合并為一個,結果存儲在destkey
中。
五、Geo操作命令
Redis 的 Geospatial 功能用于存儲和處理地理空間數據,如地理位置的經緯度信息。基于有序集合(ZSet)實現,通過將經緯度轉換為一個分數進行存儲。
- 命令
GEOADD <key> <longitude> <latitude> <member> [longitude latitude member ...]
:向鍵key
對應的地理空間集合中添加一個或多個地理位置信息。GEODIST <key> <member1> <member2> [unit]
:計算鍵key
對應的地理空間集合中兩個成員之間的距離,可指定單位(如 m、km、mi、ft)。GEORADIUS <key> <longitude> <latitude> <radius> <unit> [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count]
:查詢鍵key
對應的地理空間集合中距離指定經緯度radius
范圍內的成員,可選擇返回成員的經緯度、距離等信息。
六、benchmark 性能測試
Redis 自帶 redis - benchmark
工具,可用于對 Redis 進行性能測試。能模擬多個客戶端同時向 Redis 服務器發送請求,測試 Redis 在不同場景下的性能指標,如 QPS(每秒查詢率)、響應時間等。也可通過指定不同的參數,如客戶端數量、請求數量、請求類型等,來模擬不同的業務場景,評估 Redis 在高并發情況下的性能表現。
- 命令
redis-benchmark -h 127.0.0.1 -p 6379 -c 100 -n 100000
此命令表示使用 100 個客戶端同時向 127.0.0.1:6379
的 Redis 服務器發送 100000 個請求進行性能測試。
← 上一篇 MySQL——表添加索引多種方式 | 記得點贊、關注、收藏哦! | 下一篇 JUC小冊——公平鎖和非公平鎖 → |