我有一个 Web 应用程序,它查询 opentsdb 服务器(后端使用 Hbase 集群)以获取不同指标的数据点,并使用 dygraph javascript 图形库绘制这些指标。由于从 opentsdb 获取特定指标过去一天的所有数据点本身需要近 2 秒,因此绘制近 25 个指标的应用程序变得非常慢。
为了减少这种延迟,我正在考虑使用 php5 的 memcached 模块来缓存所有查询。但我对 memcached 有几个疑问。
有什么方法可以配置 memcache,使其通过在特定时间间隔后运行一些命令行查询来在后台继续更新其缓存。
有什么方法可以配置 memcache 始终使用缓存来回复查询,而不是先更新其缓存,因为我的应用程序只绘制过去一天的数据点。错过一些数据点并不那么重要。
答案1
我认为php.net
手动的memcache
memcached 可以满足您的需求。但请记住,您无法像在数据库中那样通过命令获取已存储的记录select
。
Memcahe 是一种在后台运行的服务,您可以使用 php 的 memcache 模块连接到它。您存储在 memcache 中的任何记录都有一个
expire
标志,当它必须删除您的记录时,它会通知您的 memcache 服务器。查看这。它应该在您的 php 代码中,您可以将所有记录添加到 memcache 服务器中,并将其过期时间设置为一天。memcache 中的所有记录都通过一个键来区分。现在在您的 PHP 代码中,您无需向数据库发送请求,而是首先通过向其发送数据键来检查 memcache,以了解它是否存储了您的记录,或者您的数据是否因过期而被删除。如果记录已过期,现在是时候创建查询以从数据库中选择数据并将其再次存储在您的 memcache 服务器中了。