Redis中的keys和Hkeys的區別

1、主要區別

keys和hkeys最根本的區別就是操作的對象不同

  • keys:針對的是redis中的所有key值,用於檢索redis中符合條件的key值
  • hkeys:針對的是單個hash,目的是獲得該hash對象的字段值

2、keys

2.1、官方解釋

KEYS pattern
查找符合給定模式的key。

  • 可以使用正則表達式

KEYS 命中數據庫中所有key。
KEYS h?llo命中hello, hallo and hxllo等。
KEYS h
llo命中hllo和heeeeello等。
KEYS h[ae]llo命中hello和hallo,但不命中hillo。
KEYS h[a-z]llo
KEYS hello[0-9]
特殊符號用”\”隔開

2.2、時間複雜度

O(N),N爲數據庫中key的總數量

2.3、返回值

符合給定模式的key列表。

2.4、帶來的性能問題

keys的時間複雜度是O(N),在執行此命令的時候redis會鎖定,花費的時間較長。
由於redis的單線程性質,會導致後續提交給redis命令都阻塞在隊列中,redis服務器CPU增高。
許多客戶端發出的redis命令長時間得不到響應,進一步影響業務甚至引起系統的雪崩效應。

在業內有一條鐵律:禁止在生產環境使用Keys正則匹配操作(實際即便是開發、測試環境也要慎重使用)

3、HKeys

3.1、官方解釋

HKEYS key
返回單個哈希表key中的所有域。

3.2、時間複雜度

O(N),N爲哈希表的大小。

3.3、返回值

一個包含哈希表中所有域的表。
當key不存在時,返回一個空表。
當key存在,但是類型不是hash類型的時候,則拋出異常

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章