Pergunta

Eu tenho uma situação onde eu poderia realmente se beneficiar de ter sistema como memcached, mas com a capacidade de armazenamento (por cada tecla) lista de elementos ordenados, e modificar a lista por adição de valores.

Por exemplo:

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

O que eu então poderia usar como esta:

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

Sistema Necessário me permitiria obter facilmente itens contar em cada array, e buscar qualquer número de valores da matriz, com o pressuposto de que os valores são classificadas usando o valor anexado.

Espero que a descrição é clara. E a questão é relativamente simples:? Há qualquer sistema

Foi útil?

Solução

Redis suporta ambas as listas e conjuntos. Você pode desativar o disco de poupança e usá-lo como Memcached em vez de ir para MongoDB que salvar os dados no disco.

Outras dicas

Dê uma olhada MongoDB . Ele usa arquivos de memória mapeada, por isso é incrivelmente rápido e deve executar em um nível comparativa para memcached.

MongoDB é um banco de dados sem esquema que deve apoiar o que você está procurando (indexação / classificação)

MongoDB vai caber. O que é importante que tem índices, assim você pode adicionar um índice por título para a coleta de tópicos e, em seguida, recuperar os itens ordenados pelo índice:

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

porque não basta armazenar uma matriz em memcached? pelo menos em python e PHP as APIs memcached apoiar este (eu acho usos python pickle mas eu não recordar com certeza).

Se você precisa de armazenamento permanente de dados ou backup, memcacheDB usa a mesma API.

exemplo básico pseudopython:

obtenção de dados armazenados armazenados = cache.get (storedDataName)

lista de inicialização se você não tiver guardado qualquer coisa previamente if (armazenado == None): = Armazenados {}

---------------- encontrar itens armazenados

tentar: alreadyHaveItem = armazenado [ItemKey] exceto KeyError: imprimir 'nenhum resultado no cache'

---------------- a adição de novos itens

para o item em newItemsDict: armazenados [artigo] = newitems [ponto]

---------------- salvar os resultados no cache cache.set (storedDataName, armazenados, TTL)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top