日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

string类型比较_redis存json数据时选择string还是hash

發(fā)布時(shí)間:2024/4/11 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 string类型比较_redis存json数据时选择string还是hash 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

我們在緩存json數(shù)據(jù)到redis時(shí)經(jīng)常會(huì)面臨是選擇string類型還是選擇hash類型去存儲。接下來我從占用空間和IO兩方面來分析這兩種類型的優(yōu)勢。

1、占用空間

根據(jù)數(shù)據(jù)結(jié)構(gòu)的共識我們知道hashtable類型是要比string類型更占用空間, 而ziplist類型與string類型占用的空間基本相差不大。

如下圖就是ziplist的存儲的格式

那我們接下來分別分析redis的string和hash類型占用空間方面的知識

  • string類型: string類型當(dāng)然如其名,如果json數(shù)據(jù)以string類型去存儲,那么它的空間占用方面肯定是相當(dāng)?shù)摹?/li>
  • hash類型: redis對hash類型是有兩種編碼方式,分別是ziplist和hashtable。當(dāng)如下情況時(shí)redis的hash類型,底層是用ziplist編碼的:哈希對象保存的所有鍵值對的鍵和值的字符串長度都小于 64 字節(jié);哈希對象保存的鍵值對數(shù)量小于 512 個(gè);不滿足上述情況時(shí),redis的hash類型,底層編碼格式為hashtable。

2、IO

從IO的角度來分析string和hash類型,我們得有一個(gè)共識,我們知道redis是有服務(wù)端的,也就是部署redis的所在機(jī)器他們會(huì)運(yùn)算能力的。

  • string類型:取數(shù)據(jù):根據(jù)redis鍵取對應(yīng)的整個(gè)value值。存數(shù)據(jù):根據(jù)redis鍵存這個(gè)value值更新數(shù)據(jù): 根據(jù)redis鍵更新整個(gè)value值
  • hash類型:取數(shù)據(jù):根據(jù)redis鍵,然后遍歷整個(gè)hash鍵值對(相對string的取數(shù)據(jù)更加耗時(shí))。存數(shù)據(jù):根據(jù)redis鍵,在value出存鍵值對更新數(shù)據(jù):根據(jù)redis鍵和hash key更新對應(yīng)的數(shù)據(jù)

3、總結(jié)

綜上所述,那具體怎么選擇是用string類型還是hash類型存儲json數(shù)據(jù)呢?給出以下結(jié)論

  • 如果你的業(yè)務(wù)類型中對于緩存的讀取緩存的場景更多,并且更新緩存不頻繁(或者每次更新都更新json數(shù)據(jù)中的大多數(shù)key),那么選擇string類型作為存儲方式會(huì)比較好。
  • 如果你的業(yè)務(wù)類型中對于緩存的更新比較頻繁(特別是每次只更新少數(shù)幾個(gè)鍵)時(shí), 或者我們每次只想取json數(shù)據(jù)中的少數(shù)幾個(gè)鍵值時(shí),我們選擇hash類型作為我們的存儲方式會(huì)比較好。

總結(jié)

以上是生活随笔為你收集整理的string类型比较_redis存json数据时选择string还是hash的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。