使用 Redis 實現(xiàn)一個輕量級的搜索引擎
往期熱門文章:
1、面試官問:數(shù)據(jù)庫 delete 表數(shù)據(jù),磁盤空間還是被一直占用,為什么? 2、巧用 Stream API 優(yōu)化 Java 代碼 3、最牛逼的故障診斷工具!秒級定位線上問題 4、新技能 MyBatis 千萬數(shù)據(jù)表,快速分頁! 5、常見的SQL面試題:經(jīng)典50例 作者:jasonGeng88 https://github.com/jasonGeng88/blog
場景

實現(xiàn)1
select ... from table_1
left join table_2
left join table_3
left join (select ... from table_x where ...) tmp_1
...
where ...
order by ...
limit m,n
explain關鍵字進行SQL性能分析,對該加索引的地方都加上了索引。同時將一條復雜SQL拆分成了多條SQL,計算結果在程序內存中進行計算。$result_1 = query('select ... from table_1 where ...');
$result_2 = query('select ... from table_2 where ...');
$result_3 = query('select ... from table_3 where ...');
...
$result = array_intersect($result_1, $result_2, $result_3, ...);

子類單選:直接根據(jù)條件 key,獲取對應結果集; 子類多選:根據(jù)多個條件 Key,進行并集操作,獲取對應結果集; 最終結果:將獲取的所有子類結果集進行交集操作,得到最終結果;

ZRANGEBYSCORE命令,根據(jù)分數(shù)(價格)區(qū)間,獲取相應結果集。擴展
分頁

ZINTERSTORE命令,賦結果集權重為0,商品時間結果為1,取交集而得的結果集賦予創(chuàng)建時間分值的新有序集合。對新結果集的操作即能得到分頁所需的各個數(shù)據(jù):頁面總數(shù)為: ZCOUNT命令當前頁內容: ZRANGE命令若以倒序排列: ZREVRANGE命令
數(shù)據(jù)更新
性能優(yōu)化
MULTI命令,開啟一個事務,將 Redis 的多次操作放在一個事務中,最后通過EXEC來進行原子性執(zhí)行(注意:這里所謂的事務,只是將多個操作在一次連接中執(zhí)行,如果執(zhí)行過程中遇到失敗,是不會回滾的)
最近熱文閱讀:
1、從 0 到 1 手把手教你制作酷炫可視化大屏 2、巧用 Stream API 優(yōu)化 Java 代碼 3、最牛逼的故障診斷工具!秒級定位線上問題 4、一次線上 JVM 調優(yōu)實踐,F(xiàn)ullGC 40 次/天到 10 天一次的優(yōu)化過程 5、新技能 MyBatis 千萬數(shù)據(jù)表,快速分頁! 6、常見的SQL面試題:經(jīng)典50例 7、事務注解 @Transactional 失效的3種場景及解決辦法 8、看看人家SpringBoot的全局異常處理多么優(yōu)雅... 9、代碼總是被嫌棄寫的太爛?裝上這個IDEA插件再試試! 10、60個相見恨晚的神器工具! 關注公眾號,你想要的Java都在這里
評論
圖片
表情
