關於網路伺服器
假如我有數千萬甚至是上億的使用者資料,我想把使用者自增ID和使用者名稱UserName放到快取裡。
我的需求是,當要查詢使用者的資訊時,我想先從快取里根據使用者名稱UserName獲取到使用者的ID,
然後再通過ID在資料庫裡查詢使用者的資訊。
我想當一個使用者表達到上億的數量級別時,用自增ID來查詢肯定比用UserName來查詢快好多倍,即使UserName做了簇級索引。
我現在的疑問是:
1.做這樣的快取需要什麼樣配置的伺服器,ID為自增ID,UserName最大長度為20.上億數量級的資料,
一個記憶體為4G的伺服器能支援的了嗎?
2.應該怎麼樣來實現快取,資料幾乎不會變化,但是要頻繁的新增資料到快取裡,應該怎麼樣才能既容易寫入快取又容易從快取裡查詢資料,並且這些操作不能耗太大的效能。
我能想到的快取方案有:
方案1.objCache.Insert(CacheKey, objObject);CacheKey對應的是使用者名稱UserName,objObject對應的是自增ID,通過Cache[UserName]方式來獲取自增ID。這樣的好處是新增快取容易,讀取快取資料也很容易。但是問題是,這樣新增上億數量級的快取效能是否有問題?
方案2.定義一個Hashtable(雜湊表)來存放使用者名稱UserName(key)和自增ID(value),然後把Hashtable存到快取裡,當要查詢或者新增資料時把Hashtable從快取裡讀取出來,然後再對Hashtable進行查詢或者新增資料。但是問題是,這樣的Hashtable將是一個非常龐大的物件,頻繁的從快取裡寫入讀取,會不會也很好效能呢?況且上億數量級別的雜湊表Hashtable[key]這樣讀取資料會快嗎?
高手們,你們是怎麼處理這個問題的呢?一起來探討一下吧!
相關文章
- 關於網路流
- 關於網路捐款
- 關於OA、SAAS、網際網路
- 關於RAC的私有網路
- 關於Docker中網路效能疑惑Docker
- 關於十進位制網路
- 關於區塊鏈和網際網路區塊鏈
- 關於"網際網路出版許可證"
- 關於linux的網路管理(請教網路高人)(轉)Linux
- 求教 banq 大哥關於網際網路問題
- 關於神經網路的討論神經網路
- 關於網路IP地址的分類
- 關於以太坊 "雷電網路" 的思考
- 關於SFTP和網路分層的理解FTP
- 關於網路的一點問題(轉)
- 關於AutoML應用於網路威脅的思考TOML
- 十個關於網際網路圈的冷知識
- 關於網際網路創業的三個建議創業
- 關於網際網路消費的那些事–資訊圖
- 關於網際網路未來形態的暢想
- Web 開發學習筆記——關於網際網路和網際網路應用Web筆記
- 第一天---關於網路的理解
- 關於網路框架設計封裝的扯淡框架封裝
- 關於計算機網路的 Wireshark 實驗計算機網路
- DockerDevOps答疑:關於資料容器和網路Dockerdev
- 關於網路安全幾個問題的整理
- 關於第三方的網路庫
- 一次關於偷拍的網路實驗
- 【預研】關於網際網路廣告:半小時讀懂網際網路廣告新生態
- 關於網際網路讓人無語的 11 大預言
- 超 38 萬個 Kubernetes API 伺服器暴露於網際網路API伺服器
- 關於網路安全的2021的預測
- 關於程式設計師寫文件(網路轉載)程式設計師
- 黑客攻防:關於工業網路安全的那些事黑客
- 一些關於網路的基礎知識
- 關於神經網路:你需要知道這些神經網路
- 關於社交網路推廣的十五段廢話
- linux網路配置(關於connect: network is unreachable)Linux