搜尋

首頁  >  問答  >  主體

Redis中keys()方法作用原理是什麼?

鄙人蠢,讀不懂redis源碼~
有一天用redis-py連上Redis備用服務器,想看一下某類型的key有多少個。

rds = redis.Redis(ip, host)
print len(rds.keys('xxx_*'))

最後有大概400w個,阻塞了很久才算出來結果。
令我疑惑的是,這個客戶端進程CPU占用率一直在100%以上(為什麼會超過100%我也不知道),反倒內存占用率不高。

理論上keys的運算結果應該是服務端計算出來的,客戶端接收數據頂多就是內存消耗多點兒,為什麼實際情況中客戶端CPU占用率如此之高,客戶端自己做了什麼奇怪的計算?

大家讲道理大家讲道理2854 天前850

全部回覆(3)我來回復

  • PHPz

    PHPz2017-04-21 11:17:47

    遍歷匹配, 肯定慢. 作者都說了盡量不要用keys這個命令

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-21 11:17:47

    cpu高的原因主要是在解碼傳輸的格式,轉換成python物件吧

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-21 11:17:47

    你用的是top看的?超過100%是因為多核心的cpu吧

    最好別用key,可以用redis的一個小工具redis-rdb-tools,怎麼用在這搜搜好像有人提到過

    回覆
    0
  • 取消回覆