memcached - как получить имена всех ключей?

  • Автор темы Автор темы grey109
  • Дата начала Дата начала

grey109

Новичок
memcached - как получить имена всех ключей?

Подскажите, как получить имена всех ключей в memcached? В документации не нашел. Похоже готовой функции нет.
 
Никак.

Само возникновение такой потребности говорит об использовании memcached не по назначению.
 
Мне нужно сделать на сайте что-то вроде статистике: какой файл сколько раз скачали, например, за последний час.

Сайт высоконагруженный, поэтому нагружать лишний раз базу данных не хочется, вот я и подумал сделать это с использованием memcached.

Если подскажите как это реализовать, не создавая лишней нагрузки - буду благодарен.
 
В memcached никто не гарантирует, что этот ваш счетчик не пропадет. Через секунду. При том что был поставлен на час позже другого, который останется. Потому что кэш.

Возьмите что-то поперсистентнее и продвинутее - redis, tokyo tyrant.
 
telnet 127.0.0.1 11211
>stats items
STAT items:1:number 2
...
STAT items:1:outofmemory 0

>stats cachedump 1 2
ITEM yyy [3 b; 1265496714 s]
ITEM xxx [2 b; 1265496714 s]

outofmemory - показывает последний чанк или нет, если нет
то надо делать дамп для следующего чанка

в PHP API эта фича не реализована
 
И зачем было это говорить? Вот теперь он возьмет и сунет это в продакшен.
 
Сайт высоконагруженный
побольше цифр, мсье.

-~{}~ 07.02.10 20:35:

fixxxer
зачем советовать редис и токио, если даже неизвестны нагрузки. у человека там 10к хостов в сутки, но хайлоад, ага.
 
Ну раз уж человек взял memcached... :) один фиг.

А так то зачастую просто надо научиться правильно работать с СУБД, ага.

-~{}~ 07.02.10 14:11:

Особо будет смешно, если он щас пойдет сканить slab-ы. :D
 
А в каких случаях выгоден memcached, нежели стандартные средства MySQL для кеширования результатов запросов?
 
Вурдалак
для кеширования выборок - практически никогда. смысл?
 
Я тоже не вижу, но сам-то memcached был написан, насколько я знаю, специально для LiveJournal для снижения нагрузки с СУБД. А каким образом? Что ещё кешировать можно, кроме выборок (касаемо СУБД)?
 
Вурдалак
можно (нужно) кешировать более высокоуровневые вещи: структуры, результаты вычислений/обработки.

хотя это не панацея.
тот же фейсбук наоборот в кэше держит данные на уровне поля, а не записи (по крайней мере профиля). user:666:name - примерно так.
 
В том же LiveJournal и подобных проектах как раз часто кэшируются именно данные моделей (как правило, выборка + возможно постобработка); смысл тут даже не в том, что в mysql query cache - говно, а в том, что, во-первых, mysql-ей много, а мемкешей мало, и, во-вторых, в итоге для многих get-реквестов часто обходимся вообще без коннектов к СУБД.

user:666:name это уже оптимизация, покомпактнее сериализации ибо.

а вообще, тут к чему надо стремиться - к минимизации соотношения miss/hit и к минимизации числа запросов вообще. а это всегда компромисс.
 
Сверху