php - 将SQL结果移植到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_cat_active=true ORDER BY P.product_date DESC


上面的查询将返回特定类别的所有产品ID,这些产品ID将导入到Memcached中,然后其余过程(即分页)的模拟将与mysql结果集相同。

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

我的问题是这是切实可行的方法吗?人们如何处理搜索,如果某人正在搜索返回10000个结果的产品(实际上是不可能的),他们是否在每个时间表中进行搜索?是否有可用的memcached和mysql很好的示例来说明如何完成这些任务?

最佳答案

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

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

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

我希望这能帮到您

关于php - 将SQL结果移植到memcached,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3795478/

相关文章:

mysql - 数据库 MYSQL Sum 和 Avg 自动化

mysql - UNION MYSQL中的三个不同的SELECT

php - “此后端不可用/不需要自动清洁”是什么意思? (对于memcache)

memcached - 内存缓存,多个实例与单个实例

php - MySQL行已插入但未保存?

php - 具有匹配表/模型名称的 CakePHP 3 外键

php - 有没有一种简单的方法可以在不使用JavaScript的情况下用PHP“获取”图像的大小?

php - 在while循环中获取名称属性

mysql - 当要排序的列是在case语句中时,如何通过BigInteger而不是varchar来制作MySQL排序值?

PHP memcached - 第 0 行未知中的 php_msgpack_serialize