Question

Je pourrais très bien tirer parti d'un système comme memcached, mais avec la possibilité de stocker (pour chaque clé) une liste d'éléments triée et de la modifier en ajoutant des valeurs.

Par exemple:

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')

Ce que je pourrais alors utiliser comme ceci:

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

Le système requis me permettrait d’obtenir facilement le nombre d’articles dans chaque tableau et d’extraire n’importe quel nombre de valeurs du tableau, en supposant que les valeurs sont triées à l’aide de la valeur attachée.

J'espère que la description est claire. Et la question est relativement simple: existe-t-il un tel système?

Était-ce utile?

La solution

Redis prend en charge les listes et les ensembles. Vous pouvez désactiver l’enregistrement sur disque et l’utiliser comme Memcached au lieu d’utiliser MongoDB, qui permettrait d’enregistrer les données sur le disque.

Autres conseils

Consultez MongoDB . Il utilise des fichiers mappés en mémoire, il est donc incroyablement rapide et devrait fonctionner à un niveau comparable à celui de MemCached.

MongoDB est une base de données sans schéma qui devrait prendre en charge ce que vous recherchez (indexage / tri)

MongoDB conviendra. Ce qui est important, c’est les index, vous pouvez donc ajouter un index par titre pour la collection de rubriques, puis récupérer des éléments triés par index:

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

pourquoi ne pas simplement stocker un tableau dans memcached? au moins en python et en PHP, les API memcached le supportent (je pense que python utilise pickle mais je ne me souviens pas à coup sûr).

si vous avez besoin d'un stockage de données permanent ou d'une sauvegarde, memcacheDB utilise la même API.

Exemple de pseudopython de base:

récupérer les données stockées stocké = cache.get (nomDonnéesDonnées)

initialiser la liste si vous n'avez rien enregistré auparavant si (stocké == Aucun):      stocké = {}

---------------- recherche d'éléments stockés

essayez:    alreadyHaveItem = stocké [ItemKey] sauf KeyError:    print 'pas de résultat dans le cache'

---------------- ajout de nouveaux éléments

pour l'élément dans newItemsDict:     stocké [item] = newItems [item]

---------------- sauvegarder les résultats en cache cache.set (storageDataName, stocké, durée de vie)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top