memcache 可以在 Ubuntu 启动后调用脚本来重新加载自身吗?

memcache 可以在 Ubuntu 启动后调用脚本来重新加载自身吗?

由于 memcache 将所有内容存储在 RAM 中,因此在节点从故障中恢复后,它将丢失其存储。memcache 是否提供在启动后调用脚本的钩子?我们希望该脚本执行“某事”,要么访问外部服务等,以重新加载缓存。我们使用的是 Ubuntu 11。

答案1

由于您正在运行 Ubuntu,因此您可以将 memcache 任务包装到 Upstart 配置中。

启动后调用脚本的“钩子”memcached位于post-startUpstart 配置部分。

你的配置将会像这样:

# 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 帖子

相关内容