Php 将SQL结果移植到memcached

Php 将SQL结果移植到memcached,php,mysql,memcached,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

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

记录不经常插入/更新,我想将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
上面的查询将返回一个特定类别的所有产品ID,这些ID将被导入memcached,然后剩下的过程(即分页)将被模拟,就像我们对mysql结果集所做的一样

插入过程将使缓存过期或在阵列的第一行插入产品id


我的问题是这是实际的方法吗?人们是如何处理搜索的?比如说,如果一个人正在搜索一个返回10000个结果(实际上可能不可能)的产品,他们是否每次都搜索时间表?有没有关于memcached和mysql的好例子可以说明如何完成这些任务?

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

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

如果您的失效方案仅基于时间(新条目仅在5分钟后才会出现),则有一个快速且肮脏的技巧可用于memcache:只需将sql查询字符串的md5用作memcache键,并告诉memcache将select结果保留5分钟


我希望这将有助于您

我也使用了或作为替代方法,这也是更新产品列表的肮脏方式,即,将新产品放在所有先前存储的ID上,这将从重新查询数据库中保存