MongoDB con upserts es ideal para esto.
Si usted está almacenando algo como:
{ "url" : "www.example.com", "pageviews" : 0 }
puedes páginas vistas atómicamente incremento muy rápidamente con la operación atómica $ inc:
db.downloads.update({'url' : 'www.example.com'}, {'$inc' : {pageviews : 1}})
Si utiliza upserts, usted no tiene para verificar si existe un documento antes de actualizarlo. Por ejemplo, si usted dice:
db.downloads.update({'url' : 'www.example.com'}, {'$inc' : {pageviews : 1}}, {"upsert" : true})
el documento con la URL www.example.com se creará si no existe (con páginas vistas puestos a 1) o, si existe, páginas vistas serán incrementado Esto significa que no tiene que preocuparse por rellenar previamente la colección.
sin duda diría redis. Estoy haciendo un contra tipo de cosas y estoy presionando 30k comandos por minuto en un VPS de $ 512MB. :) –
Intentamos usar redis para un sistema de contadores. El almacén de datos primario de Redis es RAM, y nuestro conjunto de datos era demasiado grande para que sea efectivo.Algo más parecido a Tokyo Tyrant, que no tiene que mantener todo el conjunto de datos en ram todo el tiempo, probablemente habría sido una mejor opción. –
¿No se puede mantener un contador simple en la memoria RAM? Twitter almacena casi todos los tweets activos en la memoria. Si quieres rendimiento, creo que deberías pagar un poco de efectivo por un módulo de memoria. Al lado de usted puede obtener un par de conciertos de ram barato. – Alfred