2010-09-25 26 views
0

我有几个用户经常访问的表。同一种查询一次又一次地运行,这会在服务器上造成额外的负载。将SQL结果移植到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插入到数组的第一行。

我的问题是这个实际应用?人们如何处理搜索,说明一个人是否在搜索一种能够返回10000个结果的产品(实际上可能不可能),他们是否每次都搜索表格?有什么好的memcached和mysql示例可以显示如何完成这些任务?

回答

2

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

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

如果您的失效计划仅基于时间(新条目将仅在5分钟后出现),您可以使用memcache快速地使用&脏招:只需使用sql查询字符串的md5作为memcache键,并告诉memcache保持5分钟的选择结果。

我希望这将有助于你

+0

我也使用或替代,这也是更新的产品列表中即提出了新的产品。上述所有以前存储的ID,这将再次查询从数据库保存肮脏的方式 – Maximus 2010-09-25 23:33:05