2021-02-02 分類: 網(wǎng)站建設(shè)
我們知道在Redis中有5種數(shù)據(jù)類型,之前的文章中我們已經(jīng)介紹過了String類型,也就是字符串類型,今天創(chuàng)新互聯(lián)學(xué)習(xí)第二種數(shù)據(jù)類型,哈希類型。大部分語言基本都提供了哈希類型,如Java語言中的Map類型及Python語言中的字典類型等等。雖然語言不同,但它們基本使用都是一樣的。也就是都是鍵值對結(jié)構(gòu)的。例如:
- value={{field1, value1}
下面我們通過下圖來直觀感受一下字符串類型和哈希類型的區(qū)別。
Redis中哈希類型都是鍵值對結(jié)構(gòu)的,所以要特別注意這里的value并不是指的是Redis中的key的value,而是Redis中哈希類型中的field所對應(yīng)的value。
下面我們還是和介紹字符串類型一樣,先是了解一下Redis中哈希類型的相關(guān)命令。
一. 設(shè)置值
- hset key field value
我們看上圖執(zhí)行的命令知道,hset命令也是有返回值的。如果hset命令設(shè)置成功,則返回1,否則則返回0。除此之外Redis也為哈希類型提供了hsetnx命令。在字符串那篇文章中,我們知道,nx命令則表示key不存在的時候,才能設(shè)置成功,而在Redis中hsetnx命令則表示field不存在的時候,才能設(shè)置成功。
- hget key field
我們看hget命令和get有很大的不同,get命令在獲取的時候,只要寫一個名字就可以了,而hget命令則要寫兩個名字,第一個名字就是key 第二個名字就是field。除此之外,當然key或者field不存在時,返回的結(jié)果都是nil。
- hdel key field [field ...]
hdel命令刪除的時候,也會有返回值,并且這個返回就是成功刪除field的個數(shù)。當field不存在時,并不會報錯,而是直接返回0。
- hlen key
hlen命令返回的就是當前key中field的個數(shù),如果key不存在,則返回0。
- hmget key field [field ...]
- hmset key field value [field value ...]
hmset命令和hmget命令分別都是批量設(shè)置和獲取值的,hmset命令沒有什么要注意的,但hmget命令要特別注意,當我們獲取一個不存在的key或者不存在的field時,Redis并不會報錯,而是返回nil。并且有幾個field不存在,則Redis返回幾個nil,當整個key都不存在時,則返回全部nil(有幾個field返回幾個nil)。
- hexists key field
當執(zhí)行hexists命令時,如果當前key包括field,則返回1,否則返回0。
- hkeys key
- hvals key
- hvals key
hgetall命令會返回當前key中的所有field-value,并按照順序依次返回,也就是field-value field-value等等。
- hincrby key field increment
- hincrbyfloat key field increment
hincrby命令和incrby命令的使用功能基本一樣,都是對值進行增量操作的。唯一不同的就是incrby命令的作用域key,而hincrby命令的作用域則是field。
- hstrlen key field
hstrlen命令返回的是當前key中field中字符串的長度,如果當前key中沒有field則返回0。
哈希類型命令的時間復(fù)雜度
內(nèi)部編碼
在Redis哈希類型的內(nèi)部編碼只有兩種它們分別是:
下面我們通過以下命令來演示一下ziplist和hashtable這兩種內(nèi)部編碼。
以上就是Redis中哈希類型的相關(guān)命令及內(nèi)部編碼,如本文有不正確的地方歡迎指出。
文章標題:Redis哈希類型使用命令
本文鏈接:http://jinyejixie.com/news13/98713.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計公司、自適應(yīng)網(wǎng)站、企業(yè)建站、移動網(wǎng)站建設(shè)、定制網(wǎng)站、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容