将SQL结果移植到memcached中

时间:2010-09-25 20:34:44

标签: php mysql memcached

我有几个用户经常访问的表。相同类型的查询一次又一次地运行,这会导致服务器上的额外负载。

记录不经常插入/更新,我想将ID缓存到memcached中,然后从数据库中获取它们,这样可以减轻搜索/排序等负担。

这是一个例子

SELECT P.product_id FROM products P, product_category C WHERE P.cat_id=C.cat_id AND C.cat_name='Fashion' AND P.is_product_active=true AND C.is_cat_active=true ORDER BY P.product_date DESC

上面的查询将返回将导入到memcached的特定类别的所有产品ID,然后其余的进程(即分页)将与我们使用mysql结果集进行模拟相同。

插入过程将使缓存失效或在数组的第一行插入产品ID。

我的问题是这个实用的apporach?人们如何处理搜索说如果一个人正在搜索返回10000结果的产品(实际上可能不可能),他们每次都会搜索表吗?有没有关于memcached和mysql的好例子,它们展示了如何完成这些任务?

1 个答案:

答案 0 :(得分:2)

您可能会问自己,在插入/更新产品时是否真的需要使缓存无效。

通常,产品列表可以接受5分钟的缓存。

如果你的失效方案只是基于时间的(新条目只会在5分钟后出现),你可以使用memcache快速和肮脏的技巧:简单地使用你的sql查询字符串的md5作为memcache密钥,并告诉memcache保持选择结果5分钟。

我希望这会对你有所帮助