Ich implementiere meine eigenen Redis in C. Ich habe Bitmap durch Zuweisen genügend genügend Speicher zu halten n
unsigned longs (sagen Worte) und dann mit Word-Offset und Bit-Offset zu setzen/ein Bit an einer pos
Position löschenC Schreiben/Lesen von Memory-Snapshot zu/von Disk
word_offset = pos/BITS_PER_WORD;
bit_offset = pos % BITS_PER_WORD;
Nächster Schritt dieses Bitmap es durch das Schreiben auf die Festplatte zu bestehen, kann das lesen wieder zurück, um die Bitmap wiederherzustellen.
Als eine erste und naive Annäherung, ich versuchte, Speicher Wort für Wort zu lesen und dieses unsigned lange in eine Datei zu schreiben. Es funktioniert, sieht aber hässlich aus, arbeitet langsam und fühlt sich dumm an, da eine Bitmap bis zu 512 MB groß werden kann.
Darüber hinaus muss ich mehrere solcher Bitmaps in einer einzigen Datei speichern.
Wie kann ich einen effizienten Ansatz zum Speichern meiner Datenstrukturen auf Festplatte erstellen? Da es sich um ein Lernprojekt handelt, vermeide ich es, in den Redis-Quellcode zu schauen.
Ich bin mir nicht sicher, ob Sie Recht damit haben, den Redis-Quellcode zu übersehen. Sie werden viel lernen, wenn Sie hineinschauen. –
Ich werde definitiv in den Redis-Quellcode schauen, wie kann ich es mir leisten, ein solches Stück Technik zu vermeiden. Ich möchte es nur selbst programmieren, dann kann ich vergleichen und daraus lernen. –
Aber ich bin mir sicher, dass Sie mehr lernen, wenn Sie in umgekehrter Reihenfolge arbeiten: Redis-Quellcode studieren und dann Ihren eigenen "Klon" kodieren. Außerdem ist Ihre Frage OS-spezifisch. Wenn unter Linux, lesen Sie http://advancedlinuxprogramming.com/ –