鍍金池/ 問答/人工智能  PHP/ 多條件查詢緩存怎么搞

多條件查詢緩存怎么搞

1.有的人說,根據(jù)不同的條件去緩存,那么比如我有按時(shí)間排序 那得緩存兩份,如果按價(jià)格排序也得做兩份緩存

2.有的人說mysql的查詢緩存可以解決問題

3.我想知道比如美團(tuán)的多條件查詢是如何做緩存的?

回答
編輯回答
六扇門

mark關(guān)注一下問題,沒有經(jīng)歷過這樣的項(xiàng)目,所以不清楚具體怎么解決的.
然后提一下自己的一些想法:
他們可能沒有緩存各種組合條件的查詢結(jié)果,我認(rèn)為商品單項(xiàng)是被緩存了,比如 "全聚德烤鴨","肯德基五折券" 這種具體單個(gè)商品是緩存了.但是各種條件組合的查詢結(jié)果應(yīng)該不會(huì)被緩存.
如果單品被緩存,那么只要能保證一個(gè)高效的多條件查詢引擎就可以了,查詢出來(lái)的結(jié)果就是各種商品的id,然后從緩存高速獲取到這些商品就ok了.這種高速的多面查詢引擎可以通過elasticsearch來(lái)實(shí)現(xiàn).

僅僅是個(gè)人想法 , 持續(xù)關(guān)注該問題 , 希望看到合適的答案.

2018年2月26日 15:54
編輯回答
若相惜
$key = "select * from where .........";
cache::put($key,$data);
cache::get($key);
2018年6月29日 14:38
編輯回答
挽青絲
  • 簡(jiǎn)單處理一般是mysql語(yǔ)句md5一下作為緩存key(大問題:就是在分頁(yè)會(huì)有問題)。
  • 在復(fù)雜點(diǎn)就是根據(jù)請(qǐng)求的參數(shù),在按ksort進(jìn)行排序組合后,生成一個(gè)唯一字符,在md5作為緩存可以。問題同上
  • 一般美團(tuán)這樣的大并發(fā)的一般是純緩存。由異步(服務(wù)端)生成緩存數(shù)據(jù),而不是web端觸發(fā)生成(優(yōu)點(diǎn):不存在分頁(yè)問題;缺點(diǎn):維護(hù)成本大)
2018年2月14日 14:47