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/

相关文章:

php - 在 2 个 if 语句中使用 $_POST

java - memchache 不工作时如何处理代码(simple-spring-memcached)

php - 返回 queryfetch 并输出特定行

php - 如何使用 distinct + 获取每个数据的总和从字符串中获取不同的数据

MySQL 分区 : Simultaneous insertion to different partitions performance

MYSQL 合并 2 个查询

java - Google App Engine Memcache - 滑动过期

python - Django 内存缓存 : Compare and Set

php - 使用 PHP 和 SQL 更新用户状态

php - 是否可以将路由参数传递给 Laravel 中的 Controller 构造函数?