![memcache 可以在 Ubuntu 启动后调用脚本来重新加载自身吗?](https://linux22.com/image/801667/memcache%20%E5%8F%AF%E4%BB%A5%E5%9C%A8%20Ubuntu%20%E5%90%AF%E5%8A%A8%E5%90%8E%E8%B0%83%E7%94%A8%E8%84%9A%E6%9C%AC%E6%9D%A5%E9%87%8D%E6%96%B0%E5%8A%A0%E8%BD%BD%E8%87%AA%E8%BA%AB%E5%90%97%EF%BC%9F.png)
由于 memcache 将所有内容存储在 RAM 中,因此在节点从故障中恢复后,它将丢失其存储。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 文档等。当然,您需要从 /etc/init.d 中删除 memcached 启动脚本。
答案2
Memcache 是非持久性缓存(整个想法是补充数据提供者(如 MySQL)并缓存最常用的数据,而不是完全替换它们),因此您的要求无法实现。
关于“持久性内存缓存”的争论本身就是一个棘手的问题,因为有些人坚持认为,如果你构建了一个“持久性 memcache”,那么它就不再是一个“缓存”。
欲了解更多详情(我在这里提供的还远远不够),请查看这个 StackOverflow 帖子。