1. 獲取指定前綴的key
需求描述:
Redis中有大量以xxx開頭的key,在不使用keys命令的情況下,如何快速獲取這些前綴的key
解決方案:
redis自帶的scan命令可以解決這個問題
2. SCAN命令
SCAN是一個基于游標的迭代器,這意味著在每次呼叫該命令時,服務器都會回傳一個更新后的游標,用戶需要在下一次呼叫中使用它作為游標引數,當游標設定為0時開始迭代,當服務器回傳的游標為0時終止迭代,從游標值為0開始迭代,并呼叫SCAN直到回傳的游標再次為0,這稱為完整迭代,
時間復雜度:每次呼叫 O(1),O(N) 用于完整的迭代,包括足夠的命令呼叫以使游標回傳 0,N 是集合內的元素數,
和scan命令相關的還有另外3個命令,分別是:
- SCAN 迭代當前選定的Redis資料庫中的一組鍵
- SSCAN 迭代 Sets 型別的元素
- HSCAN 迭代 Hash 型別的欄位及其相關值
- ZSCAN 迭代 Sorted Set 型別的元素及其相關分數
語法:
SCAN cursor [MATCH pattern] [COUNT count] [TYPE type]
選項:
MATCH選項
和KEYS命令類似,后面可以跟一個通配符
COUNT選項
SCAN不能保證每次迭代回傳的元素數量,但可以使用COUNT選項根據經驗調整SCAN的行為,基本上,使用COUNT,用戶指定了每次呼叫時從集合中檢索元素所需完成的作業量,這只是實作的一個提示,但是一般來說,但是在大多數情況下,這種提示都是有效的(在資料量少的情況下,COUNT值與回傳的結果數量不相等),
TYPE選項
可以使用 TYPE 選項要求 SCAN 僅回傳與給定型別匹配的物件, TYPE 選項僅在整個資料庫 SCAN 上可用,而不是 HSCAN 或 ZSCAN 等,

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/500468.html
標籤:其他
上一篇:MySQL擴展
下一篇:mysql進階
