Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.06.2011, 21:32   #1
Amnesia
Новичок
Джуниор
 
Регистрация: 28.06.2011
Сообщений: 1
Вопрос Memcached

Всем привет!
Возможно вопрос не совсем по разделу, но:
Работаем в связке php + memcached и возник ряд вопросов.
Опишем по ситуации чтобы было ясно.

Создаём сервер memcached с памятью 1 mb.
Добавляем ключ со сроком жизни 1 секунда.
Однако ключ сам по себе не удаляется, а только если к нему обратиться через get например.
В итоге есть вероятность, что ключи начнут скапливаться и занимать память.

Первый вопрос: Как заставить ключи удаляться автоматически по окончанию их жизни?

Продолжаем. Дальше мы решили провести тест.
Забиваем наш 1 mb памяти ключами со сроком жизни 0 (бесконечно).
После того как память заканчивается начинается чистка ключей, тут всё правильно.
Но мы наблюдаем картину того, что ключ со сроком 1 секунда продолжает жить.

Второй вопрос: Почему не удалился наш ключ, ведь по логике вещей подобные ключи должны удаляться первым делом.

Надеемся на вашу помощь.

Последний раз редактировалось Amnesia; 28.06.2011 в 21:40.
Amnesia вне форума Ответить с цитированием
Старый 29.06.2011, 09:14   #2
mv28jam
Старожил
 
Аватар для mv28jam
 
Регистрация: 09.09.2008
Сообщений: 2,624
По умолчанию

Цитата:
Первый вопрос: Как заставить ключи удаляться автоматически по окончанию их жизни?
По дефолту никак! Если надо то открывать порт Memcache, системными командами перебирать переменные и удалять просроченные.
Цитата:
Второй вопрос: Почему не удалился наш ключ, ведь по логике вещей подобные ключи должны удаляться первым делом.
Это по "медленной" логике, а по "быстрой" логике это отнимает у Memcache ресурсы и тормозит его работу.

Собственно оба ваши вопроса об одном - о том как работает Memcache. Memcache заточен под максимальное быстродействие, записать и отдать как можно быстрее - вот его основные задачи! Читска устаревших данных - это не его первостепенная задача, срок хранения для Memcache это такие же данные, как и значение переменных, после выборки он просто проверяет эти данные. Пердставьте себе что Memcache будет каждую секунду проверять все данные на истечение, а пямяти например будет 10Gb, это сожрёт все его ресурсы и он перестанет отвечать. Memcache работатает по принципу "очереди", пырвым пришел - первым выйдет, те из памяти уйдет не данные с истекшим сроком хранения, а самые "старые" данные.
Стрелок-охотник
mv28jam вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PHP + Memcached Linel PHP 7 16.12.2010 10:37
memcached. Вопрос взаимодействия Виталий Желтяков PHP 3 13.11.2010 12:49