欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Redis哈希類型使用命令

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)的。例如:

  1. value={{field1, value1} 

下面我們通過下圖來直觀感受一下字符串類型和哈希類型的區(qū)別。


Redis中哈希類型都是鍵值對結(jié)構(gòu)的,所以要特別注意這里的value并不是指的是Redis中的key的value,而是Redis中哈希類型中的field所對應(yīng)的value。

下面我們還是和介紹字符串類型一樣,先是了解一下Redis中哈希類型的相關(guān)命令。

命令

一. 設(shè)置值

  1. hset key field value  

我們看上圖執(zhí)行的命令知道,hset命令也是有返回值的。如果hset命令設(shè)置成功,則返回1,否則則返回0。除此之外Redis也為哈希類型提供了hsetnx命令。在字符串那篇文章中,我們知道,nx命令則表示key不存在的時候,才能設(shè)置成功,而在Redis中hsetnx命令則表示field不存在的時候,才能設(shè)置成功。

二. 獲取值

  1. hget key field 

我們看hget命令和get有很大的不同,get命令在獲取的時候,只要寫一個名字就可以了,而hget命令則要寫兩個名字,第一個名字就是key 第二個名字就是field。除此之外,當(dāng)然key或者field不存在時,返回的結(jié)果都是nil。

三. 刪除field

  1. hdel key field [field ...] 

hdel命令刪除的時候,也會有返回值,并且這個返回就是成功刪除field的個數(shù)。當(dāng)field不存在時,并不會報錯,而是直接返回0。

四. 計算field個數(shù)

  1. hlen key 

hlen命令返回的就是當(dāng)前key中field的個數(shù),如果key不存在,則返回0。

五. 批量設(shè)置或獲取field-value

  1. hmget key field [field ...] 
  2. hmset key field value [field value ...] 

hmset命令和hmget命令分別都是批量設(shè)置和獲取值的,hmset命令沒有什么要注意的,但hmget命令要特別注意,當(dāng)我們獲取一個不存在的key或者不存在的field時,Redis并不會報錯,而是返回nil。并且有幾個field不存在,則Redis返回幾個nil,當(dāng)整個key都不存在時,則返回全部nil(有幾個field返回幾個nil)。

六. 判斷field是否存在

  1. hexists key field 

當(dāng)執(zhí)行hexists命令時,如果當(dāng)前key包括field,則返回1,否則返回0。

七. 獲取所有field

  1. hkeys key 

八. 獲取所有value

  1. hvals key 

九. 獲取所有的field-value

  1. hvals key 

hgetall命令會返回當(dāng)前key中的所有field-value,并按照順序依次返回,也就是field-value field-value等等。

十. hincrby hincrbyfloat

  1. hincrby key field increment 
  2. hincrbyfloat key field increment 

hincrby命令和incrby命令的使用功能基本一樣,都是對值進(jìn)行增量操作的。唯一不同的就是incrby命令的作用域key,而hincrby命令的作用域則是field。

十一. 計算value的字符串長度

  1. hstrlen key field 

hstrlen命令返回的是當(dāng)前key中field中字符串的長度,如果當(dāng)前key中沒有field則返回0。

哈希類型命令的時間復(fù)雜度

內(nèi)部編碼

在Redis哈希類型的內(nèi)部編碼只有兩種它們分別是:

  • ziplist(壓縮列表):當(dāng)哈希類型中元素個數(shù)小于hash-max-ziplist-entries配置(默認(rèn)512個)同時所有值都小于hash-max-ziplist-value配置(默認(rèn)64字節(jié))時,Redis會使用ziplist作為哈希的內(nèi)部實現(xiàn)。
  • hashtable(哈希表):當(dāng)上述條件不滿足時,Redis則會采用hashtable作為哈希的內(nèi)部實現(xiàn)。

下面我們通過以下命令來演示一下ziplist和hashtable這兩種內(nèi)部編碼。

  1. 當(dāng)field個數(shù)比較少并且value也不是很大時候Redis哈希類型的內(nèi)部編碼為ziplist。
  2. 當(dāng)value中的字節(jié)數(shù)大于64字節(jié)時(可以通過hash-max-ziplist-value設(shè)置),內(nèi)部編碼會由ziplist變成hashtable。
  3. 因為在Redis中中文的字節(jié)數(shù)比英文的字節(jié)數(shù)大大,正常來說,一個中文占用3個字節(jié)。
  4. 當(dāng)field個數(shù)超過512(可以通過hash-max-ziplist-entries參數(shù)設(shè)置),內(nèi)部編碼也會由ziplist變成hashtable。
  5. 由于直接創(chuàng)建512個field不方便,為了更好的驗證該功能,我將用程序的方式,動態(tài)創(chuàng)建512個field來驗證此功能,下面為具體的代碼。

以上就是Redis中哈希類型的相關(guān)命令及內(nèi)部編碼,如本文有不正確的地方歡迎指出。

分享標(biāo)題:Redis哈希類型使用命令
文章地址:http://aaarwkj.com/news/98713.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、定制開發(fā)、Google、外貿(mào)建站、關(guān)鍵詞優(yōu)化、全網(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)

h5響應(yīng)式網(wǎng)站建設(shè)
一区二区三区欧美黑人| 国产精品欧美一区二区视频 | 久久久久久精品妇女| 国产毛毛片一区二区三区| 国产自拍最新在线视频| 91久久国产香蕉熟女| 蜜臀久久精品国产综合| 在线播放国产91精品| 亚洲激情一区在线观看| 亚洲综合av伊人久久| 在线观看免费视频成人播放| 国产熟女高潮一区二区| 久久久久久极精品久久久| 国产91在线精品超碰人人| 精品亚洲一区二区三区四区| 亚洲男人天堂黄色av| 久久av一区二区三区.| 亚洲精品成人免费电影| 日韩精品中文一区二区| 国产精品99久久久久久人| 久久久久四虎国产精品| 亚洲精品在线观看毛片| 欧美精品一区二区三区狠狠| 日韩国产精品一区二区| 哪里可以看日韩免费毛片| 欧美伊人久久综合成人网| 国产精品蜜臀av在线一区| 在线观看免费国产b片| 国产亚洲欧美日韩看国产| 亚洲午夜av久久乱码| 中文字幕的国产在线播放| 在线国产精品中文字幕| 亚洲中文乱码一区二区| 风流少妇奶真白摸的好爽| 日韩av在线专区观看| 亚洲男人天堂在线播放| 日韩精品成人区中文字幕 | 亚洲免费黄色大片网站| 国产精品亚洲欧美日韩在线播放| 日本爱爱一区二区三区| 欧美午夜精品福利在线观看|