Поскольку memcache хранит все в оперативной памяти, он потеряет свое хранилище после восстановления узла после сбоя. Предлагает ли memcache хук для вызова скрипта после запуска? Мы хотим, чтобы этот скрипт сделал "что-то", либо обратился к внешней службе и т. д., чтобы перезагрузить кэш. Мы используем Ubuntu 11.
решение1
Поскольку вы используете Ubuntu, вы можете включить задачи memcache в конфигурацию Upstart.
«Хук» для вызова скрипта после memcached
запуска будет вpost-start
раздел конфигурации Upstart.
Ваша конфигурация будет выглядеть примерно так:
# memcached - in-memory cache
#
description "memcached"
start on (local-filesystems and started networking)
stop on runlevel [!2345]
respawn
pre-start script
test -x /usr/bin/memcached || { stop; exit 0; }
end script
exec /usr/bin/memcached -v -m 64 -p 11211 -u nobody -l 127.0.0.1
post-start script
/usr/local/bin/populate-memcache.sh
end script
Пожалуйста, проверьте документацию Upstart и т. д. Конечно, вам придется удалить скрипт запуска memcached из /etc/init.d.
решение2
Memcache — это непостоянный кэш (вся идея заключается в том, чтобы дополнять поставщиков данных, таких как MySQL, и кэшировать наиболее используемые данные, а не заменять их полностью), поэтому то, о чем вы просите, не может быть достигнуто.
Спор о «постоянном кэше памяти» сам по себе является банкой червей, посколькунекоторые людиутверждают, что если вы создаете «постоянный кэш памяти», то он больше не является «кешем».
Для получения более подробной информации (гораздо большей, чем я могу предоставить здесь), посетитеэтот пост на StackOverflow.