PHP - Redis/Memcachedb/Mongodb или другое постоянное хранилище для хранения счетчика
С другой стороны, это могут быть просмотры страниц, загрузки, количество голосов и т. Д. В основном, не очень "критические" данные.
Каков "лучший" способ хранения этой информации? Mysql не очень хороший вариант. Что вы, ребята, используете?
4 ответа
Я думаю, что я бы пошел с Redis, потому что:
- Антиредиз (его прозвище) действительно активно развивает Redis. (Каждый раз, когда я смотрю на свою панель инструментов github, он добавляет новый код). Сейчас он разрабатывает Redis полный рабочий день благодаря VMware
- Redis в конечном итоге является постоянным, поэтому производительность невероятна (сначала используется только быстрая память).
- Redis имеет атомарную операцию приращения, которая вам нужна.
- Redis имеет много хороших библиотек PHP. Также есть расширение, написанное как расширение C, поэтому оно имеет действительно хорошую производительность. На сайте Redis также есть обзор этих расширений. Некоторые из них являются чистым кодом PHP (работают немного, но медленнее, но их легче настроить).
MongoDB с upserts отлично подходит для этого.
Если вы храните что-то вроде:
{ "url" : "www.example.com", "pageviews" : 0 }
Вы можете быстро увеличить количество просмотров страниц с помощью атомарной операции $inc:
db.downloads.update({'url' : 'www.example.com'}, {'$inc' : {pageviews : 1}})
Если вы используете upserts, вам не нужно проверять, существует ли документ перед его обновлением. Например, если вы говорите:
db.downloads.update({'url' : 'www.example.com'}, {'$inc' : {pageviews : 1}}, {"upsert" : true})
документ с URL www.example.com будет создан, если он не существует (с просмотрами страниц, установленными в 1), или, если он существует, просмотры страниц будут увеличиваться. Это означает, что вам не нужно беспокоиться о предварительном заполнении коллекции.
Знаменитые счетчики просмотров 1990-х годов использовали простые файлы для хранения числа. Если все, что вам нужно, это просто сохранить один номер, все достаточно хорошо.