文章目錄
- 字符串和哈希類型相比
- hset 命令
- hget 命令
- hexists
- hdel
- hkeys
- hvals
- hgetall
- hmget
- hlen
- hsetnx
- hincrby
- hincrbyfloat
字符串和哈希類型相比
假設有以下一種場景:現在要在 Redis 中存儲一個用戶的基本信息(id=1、name=zhangsan、age=17),下圖表示使用字符串類型進行存儲和使用哈希類型進行存儲的區別:
注意:在 Redis 中,“鍵” 稱為 key,“值” 稱為 value,如果value 的類型是哈希類型,則 “鍵” 稱為 field,“值” 稱為 value
hset 命令
設置 hash 中指定 “鍵”(field) 的值
語法:hset key field value [field value……]
返回值:添加的 field-value 的個數
時間復雜度:O(k),因為插入時,可以插入多個,所以,k 表示插入的鍵值對(field-value) 的個數
操作演示:
hget 命令
獲取 hash 中指定 “鍵”(field) 的值
語法:hget key field
返回值:指定鍵(field)的值
時間復雜度:O(1)
操作演示:
hexists
判斷 hash 中是否存在指定的 field
語法:hexists key field
返回值:1 表示存在,0 表示不存在
時間復雜度:O(1)
操作演示:
hdel
刪除 hash 中指定的鍵(field)
語法:hdel key filed [filed……]
返回值:成功刪除field的個數
時間復雜度:O(k),k 表示刪除的鍵值對(field-value) 的個數
操作演示:
hkeys
獲取哈希中所有的 field
語法:hkeys key
返回值:所有的鍵(field)
時間復雜度:O(N)
操作演示:
注意:這個操作要慎重使用,因為,如果field非常多話,那么就可能會造成 Redis 服務器阻塞
hvals
獲取哈希中所有鍵(field)的值
語法:hvals key
返回值:所有的字段的值
時間復雜度:O(N),N表示field個數
操作演示:
注意:這個操作要慎重使用,因為,如果field非常多話,那么就可能會造成 Redis 服務器阻塞
hgetall
獲取 hash 中所有的字段(field)及其對應的值
語法:hgetall key
返回值:所有的字段及其值
時間復雜度:O(N)
操作演示:
注意:返回值是一個字段一個值相對著,同時呢,這也是個危險的操作,如果字段特別多的情況下,就可能使 Redis 阻塞
hmget
一次獲取 hash 中多個字段(field)的值
語法:hmget key field [field……]
返回值:指定字段的值
時間復雜度:O(k),k為指定的字段的數量
操作演示:
hlen
獲取哈希中字(field)段的個數
語法:hlen key
返回值:字段的個數
時間復雜度:O(1),這里的個數不需要遍歷計算,在內部有一個變量存儲了元素個數
操作演示:
hsetnx
在字段不存在的情況下,設置字段和值
語法:hsetnx key field value
返回值:0 表示設置失敗,1 表示設置成功
時間復雜度:O(1)
操作演示:
hincrby
將 hash 中字段(field)對應的值添加指定的值
語法:hincrby key field num
返回值:返回添加成功后的值
時間復雜度:O(1)
操作演示:
hincrbyfloat
hincrby 的浮點數版本,如果 field 的值是浮點數,對浮點數進行加減時,使用該命令。
語法:hincrbyfloat key field num
返回值:返回添加成功后的值
時間復雜度:O(1)
操作演示: