我有几个用户经常访问的表。相同类型的查询一次又一次地运行,这会给服务器带来额外的负载。
记录不经常插入/更新,我想将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/