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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Go map[int64]int64 写入 redis 占用多少内存

發布時間:2024/4/11 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Go map[int64]int64 写入 redis 占用多少内存 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我們在系統設計面試或者在實際工作中,免不了要進行一些估算。之前的文章里講過一些技巧,今天來個實戰。

這是我最近在做的一個工作,將內存中的一個超大的 map[int64]int64 寫入到 redis,map 里的元素個數是千萬級的。設計方案的時候,需要對 redis 的容量做一個估算。

如果不了解 redis 的話,可能你的答案是用元素個數直接乘以 16B(key 和 value 各占 8B)。我們假設元素個數是 5kw,那估算結果就是:5kw * 16B=50kk * 16B = 800MB。

答案是錯的。

為了解決這個問題,需要深入地研究一下 redis 的數據結構。

整個 redis 數據庫就是一個大的 map,它容納了所有的 key,我們都知道 key 都是 string 類型,而 value 則有 string, list, set, hashmap, zset……等類型。

Redis 中的一個 k-v 對用一個 entry 項表示,其中每個 entry 包含 key、value、next 三個指針,共 24 字節。由于 redis 使用 jemalloc 分配內存,因此一個 entry 需要申請 32 字節的內存。這里的 key, value 指針分別指向一個 RedisObject:

redis entrytypedef?struct?redisObject?{unsigned?type:4;unsigned?encoding:4;unsigned?lru:LRU_BITS;?int?refcount;void?*ptr; }?robj;

RedisObject 對應前面提到的各種數據類型,其中最簡單的就是 redis 內部的字符串了。它有如下幾種編碼格式:

SDS 編碼(圖片來自極客時間-redis 專欄)

圖中的元數據包括 type,encoding,lru, refcount,分別表示數據類型,編碼類型,最近一次訪問的時間戳,引用次數。

當字符串是一個整型時,直接放在 ptr 位置,不用再分配新的內存了,非常高效。

解析一下 44 字節的原因:元數據和 ptr 共占 16 字節,加上 44 字節,再加上字符串末尾的 '\0',共61 字節。因為字符串的長度只有 44,因此 len 和 alloc 各用 1 個字節就夠了。再加上 1 個字節的 flags,剛好是 64 字節。超過了這個值,SDS 就需要單獨再申請一塊內存,導致訪問的時候就多了一跳指針。

多提一句,redis 最大支持 512MB 大小的字符串。

回答本文的問題,恰好我們要寫入 redis 的 map 中的 key 和 value 都是整數,因此直接將值寫入 ptr 處即可。

于是 map 的一個 key 占用的內存大小為:32(entry)+16(value)+16(value)=64B。于是,5kw 個 key 占用的內存大小是 5kw*64B = 50 kk * 64B = 3200MB ≈ 3G。

假如我們在 key 前面加上了前綴,那就會生成 SDS,占用的內存會變大,訪問效率也會變差。

總之,我們根據要寫入 redis 中的字符串的長度可以很方便地估算占用內存的總大小。如果 key 和 value 恰好都是 int64 類型的,那么盡量不要在 key 前加前綴,這樣可以直接使用 key 的個數乘以 64B 就能算出占用內存的大小。

總結

以上是生活随笔為你收集整理的Go map[int64]int64 写入 redis 占用多少内存的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩一级片在线 | 歪歪6080| 欧美理论在线观看 | 一级黄色片在线 | 天天综合影院 | 制服丝袜av在线 | 久草青青视频 | 国产亚洲精品美女 | 中文字幕在线免费视频 | 欧美性大战xxxxx久久久 | 日韩毛片在线观看 | 白白色在线观看 | 国产小视频在线免费观看 | 亚洲精品成人区在线观看 | 女av在线| 手机看片欧美 | 国产成人在线视频网站 | 中文在线一区二区 | 国产一级在线观看 | 国产成人在线观看免费 | 少妇又白又嫩又色又粗 | 亚洲一区二区自拍 | 91在线无精精品入口 | 国产成人无码性教育视频 | 亚洲av日韩av在线观看 | 久久中文字幕一区二区 | 麻豆极品 | 在线观看一区二区视频 | 国产无遮挡又黄又爽 | 97超碰免费在线观看 | 久久国产小视频 | 亚洲精品成人无码毛片 | 亚洲v在线观看 | 国产福利小视频 | 亚洲男女激情 | 久久精品久久国产 | 天天操夜夜操夜夜操 | 国产精品丝袜黑色高跟鞋 | 亚洲美女操 | 精品国产中文字幕 | 黄色小说在线免费观看 | 浮力影院国产第一页 | 欧美一级片网站 | 黄色片免费的 | 国产精品suv一区二区69 | 在线无 | 天天摸夜夜 | 国产区一区二 | 日本男女激情视频 | 涩涩视频在线观看免费 | 日本老肥婆bbbwbbbwzr | 综合亚洲欧美 | 一区二区不卡视频在线观看 | 波多野结衣在线一区二区 | 污网站在线播放 | 亚洲天堂av片 | 亚洲午夜激情视频 | 亚洲综合日韩 | 在哪里可以看毛片 | 深爱激情久久 | 国产美女免费无遮挡 | 国内精品嫩模av私拍在线观看 | 丁香八月婷婷 | 成人一级大片 | 欧美性做爰大片免费 | 国产一线二线三线女 | 免费污污视频在线观看 | 善良的少妇伦理bd中字 | 欧美视频免费在线观看 | 青青草视频免费观看 | 国内毛片毛片毛片毛片毛片 | av福利在线观看 | 久久亚洲综合国产精品99麻豆精品福利 | 精品一区二区免费 | 中文字幕免费观看视频 | 国产一区色 | 日韩人妻无码一区二区三区 | 久久影视大全 | 精品国产999久久久免费 | 芭乐视频色 | 亚洲成肉网 | 亚洲天堂午夜 | 国产乱淫精品一区二区三区毛片 | 亚洲欧美日本国产 | 国产福利精品在线 | 蜜臀中文字幕 | 永久久久久久久 | 久久精品视频国产 | 国产乱码久久久久久 | 欧美视频在线看 | av免费网址在线观看 | 成人欧美一区二区三区在线播放 | 国产噜噜噜噜噜久久久久久久久 | 国产高清成人久久 | 男人的天堂2018 | 色999日韩 | 一区二区三区亚洲精品 | 致单身男女免费观看完整版 | 伊在线久久丫 |