我正在C中實現我自己的Redis我設計了位圖分配足夠的內存來保存n
無符號長整數(例如單詞),然後使用字偏移和位偏移來設置/在一個位置pos
C寫入/讀取內存快照到/從磁盤
word_offset = pos/BITS_PER_WORD;
bit_offset = pos % BITS_PER_WORD;
下一步是將其寫入磁盤堅持這個位圖清除位,可以再次回讀,以恢復該位圖。
作爲第一個也是幼稚的方法,我試圖逐字閱讀內存,並將此無符號長寫入文件。它可以工作,但看起來很醜陋,工作速度慢,感覺很蠢,因爲位圖可以長到512MB。
此外,我必須將多個這樣的位圖存儲到單個文件。
如何設計一種有效的方法將我的數據結構保存到磁盤。由於這是一個學習項目,我避免偷看Redis源代碼。
我不確定你是否正確避免查看Redis源代碼。你會看到它學到很多東西。 –
我一定會看看redis源代碼,我該如何負擔得起這樣的工程。我只想先自己編碼,然後我可以比較並從中學習。 –
但是我相信你可以通過相反的順序學習更多知識:研究Redis源代碼,然後編寫你自己的「克隆」。另外,你的問題是操作系統特定的。如果在Linux上,請閱讀http://advancedlinuxprogramming.com/ –