素材牛VIP会员
多条件查询缓存怎么搞
 li***09  分类:PHP代码  人气:996  回帖:3  发布于6年前 收藏

1.有的人说,根据不同的条件去缓存,那么比如我有按时间排序 那得缓存两份,如果按价格排序也得做两份缓存

2.有的人说mysql的查询缓存可以解决问题

3.我想知道比如美团的多条件查询是如何做缓存的?

 标签:redisphp

讨论这个帖子(3)垃圾回帖将一律封号处理……

Lv5 码农
陌***3 PHP开发工程师 6年前#1

mark关注一下问题,没有经历过这样的项目,所以不清楚具体怎么解决的.
然后提一下自己的一些想法:
他们可能没有缓存各种组合条件的查询结果,我认为商品单项是被缓存了,比如 "全聚德烤鸭","肯德基五折券" 这种具体单个商品是缓存了.但是各种条件组合的查询结果应该不会被缓存.
如果单品被缓存,那么只要能保证一个高效的多条件查询引擎就可以了,查询出来的结果就是各种商品的id,然后从缓存高速获取到这些商品就ok了.这种高速的多面查询引擎可以通过elasticsearch来实现.

仅仅是个人想法 , 持续关注该问题 , 希望看到合适的答案.

Lv6 码匠
qq***42 PHP开发工程师 6年前#2
$key = "select * from where .........";
cache::put($key,$data);
cache::get($key);
Lv3 码奴
韩***3 学生 6年前#3
  • 简单处理一般是mysql语句md5一下作为缓存key(大问题:就是在分页会有问题)。
  • 在复杂点就是根据请求的参数,在按ksort进行排序组合后,生成一个唯一字符,在md5作为缓存可以。问题同上
  • 一般美团这样的大并发的一般是纯缓存。由异步(服务端)生成缓存数据,而不是web端触发生成(优点:不存在分页问题;缺点:维护成本大)
 文明上网,理性发言!   😉 阿里云幸运券,戳我领取