Redis資料結構詳解之Hash(四)

2021-08-21 10:25:50 字數 2634 閱讀 2261

hash資料結構累似c#中的dictionary,大家對陣列應該比較了解,陣列是通過索引快速定位到指定元素的,無論是訪問陣列的第乙個元素還是最後乙個元素,所耗費的時間都是一樣的,但是陣列中的索引卻沒有實際意義,他只是乙個位置而已。而我們在查詢某個元素時,一般都會使用有意義的字段來做索引,這就產生啦dictionary。其實dictionary的實現,就是讓key跟下標索引有一定的關係,所實現的,讓他的查詢演算法複雜度變為常數o(1)。

redis中hash的新增命令hset,如果key不存在,建立key,存在,則覆蓋原有值

redis 127.0.0.1:6379>hset myhash name jim  ----給key為myset的鍵值設定鍵為name值為jim

redis中hash的檢視命令hget

redis 127.0.0.1:6379>hget myhash name   ----輸出: "jim",獲取key為myset,鍵為name的value

redis 127.0.0.1:6379>hset myhash name zlh   ----覆蓋原有值,值改為zlh替換jim 

redis 127.0.0.1:6379>hget myhash name   ---輸出:"zlh"

redis中hash的獲取key包含的field數量的命令hlen

redis 127.0.0.1:6379>hset myhash age 31 --- 設定key為myset鍵為age的value=31

redis 127.0.0.1:6379>hlen myhash   ---輸出為2,key為myset的field數量為2

redis中判斷指定key中指定field是否存在的命令hexists,存在返回1,不存在返回0

redis 127.0.0.1:6379>hexists myhash name   ---返回1,說明存在

redis 127.0.0.1:6379>hexists myhash name1  ---返回0,說明不存在

redis中hash刪除命令hdel,刪除乙個或多個指定的字段

redis 127.0.0.1:6379>hset myhash *** nan   ----新增資料

redis 127.0.0.1:6379>hset myhash issingle yes  ----新增資料

redis 127.0.0.1:6379>hset myhash hobby sports  ----新增資料

redis 127.0.0.1:6379>hdel myhash hobby  ----刪除單個資料,filed為hobby的資料

redis 127.0.0.1:6379>hdel myhash issingle ***   ---刪除多個資料,filed為issingle和***的兩條資料

redis中hash如果key或field不存在插入有效,否則不採取操作的命令hsetnx

redis 127.0.0.1:6379>hsetnx myhash *** nan   ---設定myhash,field為***的value為nan,成功返回1,因為原來不存在***這個字段

redis 127.0.0.1:6379>hsetnx myhash *** nv   ---設定myhash,field為***的value為nv,不成功返回0,因為原來存在***這個字段並且有值

redis 127.0.0.1:6379>hget myhash ***   --輸出"nan"

redis中hash中的value為數值時操作增減的命令hincrby

redis 127.0.0.1:6379>del myhash  ---刪除該鍵

redis 127.0.0.1:6379>hset myhash age 31  ---設定key為myhash的鍵為age值為31

redis 127.0.0.1:6379>hincrby myhash age 10   ---給key為myhash,鍵為age的值加10,輸出結果為41

redis 127.0.0.1:6379>hincrby myhash age -10   ---給key為myhash,鍵為age的值減去10,輸出結果為31

批量新增key/value的命令hmset

redis 127.0.0.1:6379>del myhash  --刪除該鍵

redis 127.0.0.1:6379>hmset myhash name zlh age 31 issingle no ----給key為myhash的hash新增name=zlh,age=31,issingle=no的多個鍵值

批量獲取key/value的命令hmget

redis 127.0.0.1:6379>hmget myhash name age issingle   ----輸出結果為:zlh 31 no

根據myhash鍵獲取所有的字段及value的命令hgetall

redis 127.0.0.1:6379>hgetall myhash   ----輸出結果為:name age issingle zlh 31 no

獲取所有的field的命令hkeys

redis 127.0.0.1:6379>hkeys myhash   ---輸出結果為:name age issingle

獲取所有欄位的值的命令hvals

redis 127.0.0.1:6379>hvals myhash  ----輸出結果為:zlh 31 no

Redis資料結構詳解之List(二)

1 redis中list列表的資料插入命令 lpush,rpush,linsert 127.0.0.1 6379 rpush mylist 1 結果為 integer 1 127.0.0.1 6379 rpush mylist 2 結果為 integer 2 127.0.0.1 6379 rpush...

Redis資料結構詳解之List(二)

思來想去感覺redis中的list沒什麼好寫的,如果單寫幾個命令的操作過於乏味,所以本篇最後我會根據redis中list資料型別的特殊屬性,同時對比成熟的訊息佇列產品rabbitmq,使用redis實現乙個訊息佇列。為啦讓本篇更有魅力,我再介紹下redis中list的基本屬性,以及為什麼使用redi...

Redis資料結構詳解之Set(三)

在redis中,set和list都是字串序列,非常相似,不同之處在於set是用雜湊表來保持字串的唯一性,沒有先後順序,不像list一樣,可以在首尾增刪資料。但是set也有自己的相應處理命令來完成對自己的操作。下面我們來看下set的命令怎麼使用。redis中set列表的新增命令sadd,key值相同下...