序言
Hash數據結構累似c#中的dictionary,大家對數組應該比較了解,數組是通過索引快速定位到指定元素的,無論是訪問數組的第一個元素還是最后一個元素,所耗費的時間都是一樣的,但是數組中的索引卻沒有實際意義,他只是一個位置而已。而我們在查找某個元素時,一般都會使用有意義的字段來做索引,這就產生啦dictionary。其實dictionary的實現,就是讓key跟下標索引有一定的關系,所實現的,讓他的查找算法復雜度變為常數O(1)。
扯完上面的蛋,我來說下今天要說redis中的Hash命令,如果你不懂redis,就從第一篇看跟着來敲一邊,別懶,懶啦別人裝逼你就裝不了啦,哈哈。
redis中hash對單個key/value操作的命令演示
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 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系列博文:雙擊地址