目前我正在系统上testingmemcached,每周重新启动一次,因此希望在重新启动后预热memcached。
想知道如果有人有一个样本脚本,他们发现这个目的很好?
这将非常依赖于您的应用程序。 memcached只是一种以非持久方式存储某个键的值的方法,因此没有真正的方法来构build标准化脚本。 它也没有办法浏览当前的内容,所以没有一个真正的方法来保存内容在重新启动之前。
如果你使用某种内部跟踪stream行度的应用程序框架,它可能有一些function可以做到这一点(这是不太可能的)。 实际填充memcached的最好方法是让自定义脚本采取适当的操作并将其推送到商店中。 但是,如果您使用到期日,而不是随机化这种启动可能会在事情同时到期时产生问题。 另外,假设一个networking应用程序,设置某种爬虫松散做2-3链接深度爬行可能是有效的。 不尝试启动caching,并且专注于使非caching的请求相应地快速响应,可能比以上任何一个更好地使用资源。
真正的解决scheme是不要每周重新启动服务器。 正常运行的系统不应该要求定期重启(只有在非常低级别的系统补丁时重启)。
也许可以看看像Redis一样的存在于磁盘上的caching解决scheme( http://code.google.com/p/redis/ )
我同意,理想情况下,您的服务器可能不应该每周重新启动,除非这是您的安全更新时间表。
Redis可能会也可能不会解决您的问题; 这取决于你使用的数据。 在我之前的演出中,我们使用了Redis(持久化)和Memcached。
但是为了回答你的问题,为了预热你的caching,你所需要做的就是编写一个脚本(或者让你的开发者这样做)复制他们通过memcached运行的查询,但是不会执行他们。 请记住,这只有在caching过期比脚本运行更长时才有意义。 你可能想用最重和/或最频繁的查询来尝试。
运行networking爬虫可能会有帮助,但它不会提供设置适当的失效date的选项。
作为一般背景,有一个有用的脚本选项的概述这里> http://docs.oracle.com/cd/E17952_01/refman-5.1-en/ha-overview.html
要查看memcached中的项目(不包括Peep,这是一个Ruby脚本,不再需要维护,而且我无法在Fedora 12上工作)需要在系统上安装netcat,下面的示例假设memcached正在运行在端口11211>
回声“统计项目”| nc localhost 11211
这将列出下一条指令所需的板数。 假设板数为17,显示板中的所有项目
回声“统计cachedump 17 0”| nc localhost 11211
虽然不会推荐在高度使用的生产系统上这样做!