redis数据结构详解之Hash(四)
序言
Hash數(shù)據(jù)結(jié)構(gòu)累似c#中的dictionary,大家對(duì)數(shù)組應(yīng)該比較了解,數(shù)組是通過(guò)索引快速定位到指定元素的,無(wú)論是訪問(wèn)數(shù)組的第一個(gè)元素還是最后一個(gè)元素,所耗費(fèi)的時(shí)間都是一樣的,但是數(shù)組中的索引卻沒(méi)有實(shí)際意義,他只是一個(gè)位置而已。而我們?cè)诓檎夷硞€(gè)元素時(shí),一般都會(huì)使用有意義的字段來(lái)做索引,這就產(chǎn)生啦dictionary。其實(shí)dictionary的實(shí)現(xiàn),就是讓key跟下標(biāo)索引有一定的關(guān)系,所實(shí)現(xiàn)的,讓他的查找算法復(fù)雜度變?yōu)槌?shù)O(1)。
扯完上面的蛋,我來(lái)說(shuō)下今天要說(shuō)redis中的Hash命令,如果你不懂redis,就從第一篇看跟著來(lái)敲一邊,別懶,懶啦別人裝逼你就裝不了啦,哈哈。
redis中hash對(duì)單個(gè)key/value操作的命令演示
redis中hash的添加命令hset,如果key不存在,創(chuàng)建key,存在,則覆蓋原有值
redis 127.0.0.1:6379>hset myhash?name Jim ?----給key為myset的鍵值設(shè)置鍵為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數(shù)量的命令hlen
redis 127.0.0.1:6379>hset myhash?age 31 --- 設(shè)置key為myset鍵為age的value=31
redis 127.0.0.1:6379>hlen myhash? ?---輸出為2,key為myset的field數(shù)量為2
redis中判斷指定key中指定field是否存在的命令hexists,存在返回1,不存在返回0
redis 127.0.0.1:6379>hexists myhash?name ? ---返回1,說(shuō)明存在
redis 127.0.0.1:6379>hexists myhash?name1 ?---返回0,說(shuō)明不存在
redis中hash刪除命令hdel,刪除一個(gè)或多個(gè)指定的字段
redis 127.0.0.1:6379>hset myhash?sex nan ? ----添加數(shù)據(jù)
redis 127.0.0.1:6379>hset myhash?issingle yes ?----添加數(shù)據(jù)
redis 127.0.0.1:6379>hset myhash hobby sports ?----添加數(shù)據(jù)
redis 127.0.0.1:6379>hdel myhash hobby ?----刪除單個(gè)數(shù)據(jù),filed為hobby的數(shù)據(jù)
redis 127.0.0.1:6379>hdel myhash issingle sex ? ---刪除多個(gè)數(shù)據(jù),filed為issingle和sex的兩條數(shù)據(jù)
redis中hash如果key或field不存在插入有效,否則不采取操作的命令hsetnx
redis 127.0.0.1:6379>hsetnx myhash sex nan ? ---設(shè)置myhash,field為sex的value為nan,成功返回1,因?yàn)樵瓉?lái)不存在sex這個(gè)字段
redis 127.0.0.1:6379>hsetnx myhash sex nv ? ---設(shè)置myhash,field為sex的value為nv,不成功返回0,因?yàn)樵瓉?lái)存在sex這個(gè)字段并且有值
redis 127.0.0.1:6379>hget myhash sex ? --輸出"nan"
redis中hash中的value為數(shù)值時(shí)操作增減的命令hincrby
redis 127.0.0.1:6379>del myhash ?---刪除該鍵
redis 127.0.0.1:6379>hset myhash age 31 ?---設(shè)置key為myhash的鍵為age值為31
redis 127.0.0.1:6379>hincrby myhash age 10 ? ---給key為myhash,鍵為age的值加10,輸出結(jié)果為41
redis 127.0.0.1:6379>hincrby myhash age -10 ??---給key為myhash,鍵為age的值減去10,輸出結(jié)果為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的多個(gè)鍵值
批量獲取key/value的命令hmget
redis 127.0.0.1:6379>hmget myhash name age issingle ? ----輸出結(jié)果為:zlh 31 no
根據(jù)myhash鍵獲取所有的字段及value的命令hgetall
redis 127.0.0.1:6379>hgetall myhash ? ----輸出結(jié)果為:name age issingle zlh 31 no
獲取所有的field的命令hkeys
redis 127.0.0.1:6379>hkeys myhash ? ---輸出結(jié)果為:name age issingle
獲取所有字段的值的命令hvals
redis 127.0.0.1:6379>hvals myhash ?----輸出結(jié)果為:zlh 31 no
附言
如果你在看到本文后有什么疑問(wèn),請(qǐng)加入博客左上角群,一起交流學(xué)習(xí)。
我的redis系列博文:雙擊地址
?
總結(jié)
以上是生活随笔為你收集整理的redis数据结构详解之Hash(四)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 在5分钟内搭建企业内部私有npm仓库
- 下一篇: [EF Core]数据迁移(二)