代码之家  ›  专栏  ›  技术社区  ›  Maximus

将SQL结果移植到memcached

  •  0
  • Maximus  · 技术社区  · 15 年前

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

    这里有一个例子

    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的好例子来说明这些任务是如何完成的?

    1 回复  |  直到 15 年前
        1
  •  2
  •   Jerome WAGNER    15 年前

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

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