Scan正則表達式
在平時線上 Redis 維護工做中,有時候須要從 Redis 實例成千上萬的 key 中找出特定前綴的 key 列表來手動處理數據,多是修改它的值,也多是刪除 key。這裏就有一個問題,如何從海量的 key 中找出知足特定前綴的 key 列表來?算法
keys * 正則表達式匹配數組
scan
相比 keys
具有有如下特色:服務器
scan 參數提供了三個參數,第一個是 cursor 整數值
,第二個是 key 的正則模式
,第三個是遍歷的 limit hint
。第一次遍歷時,cursor 值爲 0,而後將返回結果中第一個整數值做爲下一次遍歷的 cursor。一直遍歷到返回的 cursor 值爲 0 時結束。遍歷順序:高位進位加法spa
127.0.0.1:6379> scan 0 match key99* count 1000
Java 的 HashMap 在擴容時會一次性將舊數組下掛接的元素所有轉移到新數組下面。若是 HashMap 中元素特別多,線程就會出現卡頓現象。Redis 爲了解決這個問題,它採用漸進式 rehash。線程
它會同時保留舊數組和新數組,而後在定時任務中以及後續對 hash 的指令操做中漸漸地將舊數組中掛接的元素遷移到新數組上。這意味着要操做處於 rehash 中的字典,須要同時訪問新舊兩個數組結構。若是在舊數組下面找不到元素,還須要去新數組下面去尋找。code
scan 也須要考慮這個問題,對與 rehash 中的字典,它須要同時掃描新舊槽位,而後將結果融合後返回給客戶端。字符串