PHP - Redis / Memcachedb / MongoDB ou outro armazenamento persistente para armazenar balcão

StackOverflow https://stackoverflow.com/questions/2035808

  •  19-09-2019
  •  | 
  •  

Pergunta

Pelo contador poderia ser pageviews, downloads, número de votos etc. Basicamente, não muito dados 'críticas'.

O que é a maneira 'melhor' para armazenar as informações? MySQL não é uma boa opção. O que vocês usam?

Foi útil?

Solução

Eu acho que eu iria com Redis, porque:

  • Antirediz (seu apelido) está realmente desenvolvendo ativamente Redis . (Toda vez que quando eu olhar para o meu painel github ele cometeu algum código novo). Ele está agora a desenvolver Redis fulltime graças a VMware
  • Redis é, eventualmente, persistente para que o desempenho é kickass (primeira utiliza apenas memória, que é rápido).
  • Redis tem um atômica incremento operação que você precisa.
  • Redis tem um monte bibliotecas boa PHP. Há também um que está escrito como um C extensão por isso tem realmente um bom desempenho. Redis website também tem uma visão geral off essas extensões. Alguns são código PHP puro (executar um pouco desatualizada, mas mais lento, mas são mais fáceis de configurar).

Outras dicas

MongoDB com upserts é ótimo para isso.

Se você está armazenando algo como:

{ "url" : "www.example.com", "pageviews" : 0 }

Você pode pageviews atomicamente incremento muito rapidamente com o atômica operação de US $ inc:

db.downloads.update({'url' : 'www.example.com'}, {'$inc' : {pageviews : 1}})

Se você usar upserts, você não tem que verificar se existe um documento antes de atualizá-lo. Por exemplo, se você diz:

db.downloads.update({'url' : 'www.example.com'}, {'$inc' : {pageviews : 1}}, {"upsert" : true})

o documento com a url www.example.com será criado se ele não existe (com pageviews definidos para 1) ou, se existe, pageviews será incrementado. Isto significa que você não tem que se preocupar com a pré-preencher a coleção.

a famosa vista contadores da década de 1990 usado arquivos simples para armazenar o número. Se tudo que você precisa é apenas para armazenar um número, nada é bom o suficiente.

Eu diria APC ou memcached são boas escolhas.

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