【发布时间】:2016-12-09 05:18:56
【问题描述】:
我在 C 中实现我自己的Redis。我通过分配足够的内存来保存n unsigned longs(比如单词)然后使用字偏移量和位偏移量来设置/清除位图来设计位图位置pos
word_offset = pos / BITS_PER_WORD;
bit_offset = pos % BITS_PER_WORD;
下一步是通过将其写入磁盘来持久保存此位图,可以再次读回以恢复位图。
作为第一种和幼稚的方法,我尝试逐字读取内存并将这个无符号长写入文件。它可以工作,但看起来很丑,工作速度很慢而且感觉很笨,因为位图可以增长到 512mb 大小。
此外,我必须将多个这样的位图存储到一个文件中。
如何设计一种有效的方法来将我的数据结构保存到磁盘。由于它是一个学习项目,所以我避免偷看 Redis 源代码。
【问题讨论】:
-
我不确定您避免查看 Redis 源代码是否正确。看一眼就会学到很多东西。
-
我一定会查看redis源代码,我怎么能避免这样的工程。我只想自己先写代码,然后比较学习。
-
但我相信你可以通过相反的顺序学习更多:研究 Redis 源代码,然后编写你自己的“克隆”。另外,您的问题是特定于操作系统的。如果在 Linux 上,请阅读 advancedlinuxprogramming.com
标签: c memory-management file-io redis