redis數據結構詳解之Hash(四)

序言

Hash數據結構累似c#中的dictionary,你們對數組應該比較瞭解,數組是經過索引快速定位到指定元素的,不管是訪問數組的第一個元素仍是最後一個元素,所耗費的時間都是同樣的,可是數組中的索引卻沒有實際意義,他只是一個位置而已。而咱們在查找某個元素時,通常都會使用有意義的字段來作索引,這就產生啦dictionary。其實dictionary的實現,就是讓key跟下標索引有必定的關係,所實現的,讓他的查找算法複雜度變爲常數O(1)。html

扯完上面的蛋,我來講下今天要說redis中的Hash命令,若是你不懂redis,就從第一篇看跟着來敲一邊,別懶,懶啦別人裝逼你就裝不了啦,哈哈。redis

redis中hash對單個key/value操做的命令演示

redis中hash的添加命令hset,若是key不存在,建立key,存在,則覆蓋原有值算法

redis 127.0.0.1:6379>hset myhash name Jim  ----給key爲myset的鍵值設置鍵爲name值爲Jimc#

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"spa

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

redis 127.0.0.1:6379>hset myhash age 31 --- 設置key爲myset鍵爲age的value=31blog

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 sex 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 sex   ---刪除多個數據,filed爲issingle和sex的兩條數據

redis中hash若是key或field不存在插入有效,不然不採起操做的命令hsetnx

redis 127.0.0.1:6379>hsetnx myhash sex nan   ---設置myhash,field爲sex的value爲nan,成功返回1,由於原來不存在sex這個字段

redis 127.0.0.1:6379>hsetnx myhash sex nv   ---設置myhash,field爲sex的value爲nv,不成功返回0,由於原來存在sex這個字段而且有值

redis 127.0.0.1:6379>hget myhash sex   --輸出"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

redis中hash批量操做key/value的命令演示

批量添加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系列博文:雙擊地址

相關文章
相關標籤/搜索