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

grey109

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

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

fixxxer

К.О.
Партнер клуба
Никак.

Само возникновение такой потребности говорит об использовании memcached не по назначению.
 

grey109

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

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

Если подскажите как это реализовать, не создавая лишней нагрузки - буду благодарен.
 

fixxxer

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

Возьмите что-то поперсистентнее и продвинутее - redis, tokyo tyrant.
 

Alexandre

PHPПенсионер
telnet 127.0.0.1 11211
>stats items
STAT items:1:number 2
...
STAT items:1:eek:utofmemory 0

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

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

в PHP API эта фича не реализована
 

fixxxer

К.О.
Партнер клуба
И зачем было это говорить? Вот теперь он возьмет и сунет это в продакшен.
 

zerkms

TDD infected
Команда форума
Сайт высоконагруженный
побольше цифр, мсье.

-~{}~ 07.02.10 20:35:

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

fixxxer

К.О.
Партнер клуба
Ну раз уж человек взял memcached... :) один фиг.

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

-~{}~ 07.02.10 14:11:

Особо будет смешно, если он щас пойдет сканить slab-ы. :D
 

Вурдалак

Продвинутый новичок
А в каких случаях выгоден memcached, нежели стандартные средства MySQL для кеширования результатов запросов?
 

zerkms

TDD infected
Команда форума
Вурдалак
для кеширования выборок - практически никогда. смысл?
 

Вурдалак

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

zerkms

TDD infected
Команда форума
Вурдалак
можно (нужно) кешировать более высокоуровневые вещи: структуры, результаты вычислений/обработки.

хотя это не панацея.
тот же фейсбук наоборот в кэше держит данные на уровне поля, а не записи (по крайней мере профиля). user:666:name - примерно так.
 

fixxxer

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

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

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