PHP — Redis/Memcachedb/Mongodb или другое постоянное хранилище для хранения счетчика.
-
19-09-2019 - |
Вопрос
По счетчику это могут быть просмотры страниц, загрузки, количество голосов и т. д.В принципе, не очень «критичные» данные.
Каков «лучший» способ хранения этой информации?MySQL — не лучший вариант.Что вы, ребята, используете?
Решение
Я думаю, что я бы выбрал Redis, потому что:
- Антиредиз(его ник) действительно активно развивается Редис.(Каждый раз, когда я смотрю на свою панель управления GitHub, он добавляет новый код).Сейчас он разрабатывает Redis на постоянной основе спасибо Вмваре
- 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}})
Если вы используете обновления, вам не нужно проверять, существует ли документ перед его обновлением.Например, если вы скажете:
db.downloads.update({'url' : 'www.example.com'}, {'$inc' : {pageviews : 1}}, {"upsert" : true})
документ с URL-адресом www.example.com будет создан, если он не существует (с числом просмотров страниц, равным 1), или, если он существует, количество просмотров страниц будет увеличено.Это означает, что вам не нужно беспокоиться о предварительном заполнении коллекции.
Знаменитые счетчики просмотров 1990-х годов использовали для хранения чисел простые файлы.Если все, что вам нужно, это просто сохранить один номер, ничего не подойдет.
Я бы сказал, что APC или memcached — хороший выбор.