1. 程式人生 > >Redis中keys命令的使用與帶來的效能問題

Redis中keys命令的使用與帶來的效能問題

(一)keys命令的使用

進入redis-cli之後,我們通常比較關心的是有哪些key(ps:當然也可以用其他客戶端工具),那麼就不得不說keys命令

keys pattern

獲取當前庫下的所有key

keys *

如下圖所示,存在四個key:redis01、redis11、hbase01、hbase11

這裡寫圖片描述

keys支援一下3種類型的萬用字元:

(1)*,該萬用字元表示任一長度的字元

如:keys *,匹配資料庫中所有 key ;

如:查詢以redis開頭的所有key

keys redis*

這裡寫圖片描述

(2)?,該萬用字元表示任一字元

如:查詢以hbase開頭、第6位為任一字元、以”1”結尾的key

keys hbase?1

這裡寫圖片描述

(3)[],這和正則表示中的[]類似,每次可以配其中任何一個字元。

如:

keys redis[01]1

會匹配”redis01”和”redis11”,“2”不再【01】中,所有”redis21”未能匹配上

這裡寫圖片描述

(二)利用keys的模糊匹配帶來的效能問題

從上面開來,keys的模糊匹配功能很方便也很強大,但是在生產環境需要慎用!開發中使用keys的模糊匹配卻發現redis的CPU使用率極高,所以公司的redis生產環境將keys命令禁用了!

那怎麼解決這種類似的keys模糊匹配問題呢?其中常見的方法就是設定一個set,將需要使用的keys儲存在set中。