鄙人蠢,讀不懂redis源碼~
有一天用redis-py連上Redis備用服務器,想看一下某類型的key有多少個。
rds = redis.Redis(ip, host)
print len(rds.keys('xxx_*'))
最後有大概400w個,阻塞了很久才算出來結果。
令我疑惑的是,這個客戶端進程CPU占用率一直在100%以上(為什麼會超過100%我也不知道),反倒內存占用率不高。
理論上keys的運算結果應該是服務端計算出來的,客戶端接收數據頂多就是內存消耗多點兒,為什麼實際情況中客戶端CPU占用率如此之高,客戶端自己做了什麼奇怪的計算?
遍歷匹配, 肯定慢. 作者都說了盡量不要用keys這個命令
cpu高的原因主要是在解碼傳輸的格式,轉換成python物件吧
你用的是top看的?超過100%是因為多核心的cpu吧
最好別用key,可以用redis的一個小工具redis-rdb-tools,怎麼用在這搜搜好像有人提到過