關於網路伺服器

2021-05-22 08:35:42 字數 856 閱讀 5946

假如我有數千萬甚至是上億的使用者資料,我想把使用者自增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]這樣讀取資料會快嗎?

高手們,你們是怎麼處理這個問題的呢?一起來**一下吧!

網路伺服器宕機

1.伺服器程序終止 當伺服器程序終止時,伺服器傳送fin給客戶端,客戶端回以ack,客戶端進入close wait狀態,但還沒有結束連線。此時客戶端阻塞於fgets,客戶端繼續傳送buffer,伺服器傳送rst,客戶端readline返回0。而如果客戶端不理睬readline返回的rst,繼續wri...

linux網路伺服器

在本次中,學習了乙個簡單的基於tcp ip的伺服器 客戶端。在例子中,利用的是af inet域。在linux下,最常用就是af inet,af unix.af unix是linux檔案系統實現的本地要借字。後面的是可以用於包括英特網在內的tcp ip網路通訊的程式。下面來看乙個簡單的基於tcp ip...

網路伺服器設計

資訊家電網路伺服器設計 2016 年 6 月 目 錄 第三章 嵌入式平台開發環境 3.2 軟體開發環境 3.2.1 交叉編譯開發環境的建立 第二步 安裝交叉工具鏈 2.解壓arm linux gcc 3.4.1.tar.bz2 tar jxvf arm linux gcc 3.4.1.tar.bz2...