By counter it could be pageviews, downloads, number of votes etc. Basically, not very 'critical' data.
What is the 'best' way to store those information? Mysql is not a good option. What do you guys use?
I think I would go with Redis, because:
MongoDB with upserts is great for this.
If you're storing something like:
{ "url" : "www.example.com", "pageviews" : 0 }
you can atomically increment pageviews really quickly with the atomic operation $inc:
db.downloads.update({'url' : 'www.example.com'}, {'$inc' : {pageviews : 1}})
If you use upserts, you don't have to check whether a document exists before updating it. For example, if you say:
db.downloads.update({'url' : 'www.example.com'}, {'$inc' : {pageviews : 1}}, {"upsert" : true})
the document with the url www.example.com will be created if it doesn't exist (with pageviews set to 1) or, if it does exist, pageviews will be incremented. This means you don't have to worry about pre-populating the collection.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With