Frage

Ich habe eine Situation, wo ich wirklich aus mit System wie Memcached profitieren könnte, aber mit der Fähigkeit, zu speichern (für jede Taste) sortierte Liste von Elementen und die Liste durch Hinzufügen von Werten zu ändern.

Zum Beispiel:

something.add_to_sorted_list( 'topics_list_sorted_by_title', 1234, 'some_title')
something.add_to_sorted_list( 'topics_list_sorted_by_title', 5436, 'zzz')
something.add_to_sorted_list( 'topics_list_sorted_by_title', 5623, 'aaa')

Was ich dann wie folgt verwenden können:

something.get_list_size( 'topics_list_sorted_by_title' )
// returns 3
something.get_list_elements( 'topics_list_sorted_by_title', 1, 10 )
// returns: 5623, 1234, 5436

Erforderlich System würde mir erlauben, einfach in jedem Array zählen Einzelteile zu erhalten, und eine beliebige Anzahl von Werten aus dem Array holen, mit der Annahme, dass die Werte sortiert sind an Wert verwendet wird.

Ich hoffe, dass die Beschreibung klar. Und die Frage ist relativ einfach:? Gibt es ein solches System

War es hilfreich?

Lösung

Redis unterstützt beide Listen und Sets. Sie können Platte speichern deaktivieren und es wie Memcached verwenden, anstatt für MongoDB gehen, welche Daten auf der Festplatte speichern würde.

Andere Tipps

Hier finden Sie aktuelle MongoDB . Es verwendet Speicher abgebildeten Dateien, so unglaublich schnell ist und bei einer vergleichenden Ebene MemCached durchführen soll.

MongoDB ist ein Schema-weniger-Datenbank, die unterstützen sollten, was Sie suchen (Indizierung / Sortierung)

MongoDB passt. Was ist wichtig, es Indizes hat, so können Sie einen Index nach Titel für Themen Sammlung hinzufügen und dann Elemente durch den Index sortiert abrufen:

db.topics.ensureIndex({"title": 1})
db.topics.find().sort({"title": 1})

warum nicht nur ein Array in Memcached speichern? zumindest in Python und PHP das Memcached-APIs unterstützt diese (ich denke, Python verwendet Gurke, aber ich nicht sicher erinnern).

Wenn Sie permanente Datenspeicherung oder Datensicherung benötigen, memcachedb verwendet die gleiche API.

Grund pseudopython Beispiel:

gespeicherten Daten bekommen gespeichert = cache.get (storedDataName)

initialisieren Liste, wenn Sie etwas zuvor nicht gespeichert haben if (gespeichert == None):      gespeichert = {}

---------------- Befund Lagergut

Versuch:    alreadyHaveItem = gespeichert [ItemKey] außer KeyError:    print 'kein Ergebnis im Cache'

---------------- Hinzufügen neuer Einträge

für Artikel in newItemsDict:     gespeichert [Artikel] = newItems [Artikel]

---------------- die Ergebnisse im Cache-Speicher cache.set (storedDataName, gespeichert, TTL)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top