PHP - Redis / Memcachedb / Mongodb или другое постоянное хранилище для хранения счетчика - PullRequest
6 голосов
/ 10 января 2010

Счетчик может быть просмотров страниц, загрузок, количества голосов и т. Д. В основном, не очень «критические» данные.

Каков «лучший» способ хранения этой информации? Mysql не очень хороший вариант. Что вы, ребята, используете?

Ответы [ 4 ]

10 голосов
/ 13 января 2010

Я думаю, я бы пошел с Redis, потому что:

  • Антиредиз (его ник) действительно активно развивается Redis . (Каждый раз, когда я смотрю на свою панель инструментов github, он записывает новый код). Сейчас он разрабатывает redis fulltime благодаря VMware
  • Redis в конечном итоге является постоянным, поэтому производительность просто потрясающая (сначала используется только быстрая память).
  • Redis имеет атомарную инкремент нужную вам операцию.
  • Redis имеет много хороших библиотек PHP. Существует также один, который записан как C расширение , поэтому он имеет действительно хорошую производительность. На сайте Redis также есть обзор этих расширений. Некоторые из них являются чистым кодом PHP (работают немного, но медленнее, но их легче настроить).
9 голосов
/ 12 января 2010

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) или, если он существует, просмотры страниц будут увеличиваться. Это означает, что вам не нужно беспокоиться о предварительном заполнении коллекции.

1 голос
/ 10 января 2010

Знаменитые счетчики просмотров 1990-х годов использовали простые файлы для хранения числа. Если все, что вам нужно, это просто сохранить один номер, все достаточно хорошо.

0 голосов
/ 10 января 2010

Я бы сказал, APC или memcached - это хороший выбор.

...