溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么進(jìn)行redis批量查詢優(yōu)化接口

發(fā)布時間:2021-12-07 14:44:41 來源:億速云 閱讀:1154 作者:iii 欄目:大數(shù)據(jù)

本篇內(nèi)容主要講解“怎么進(jìn)行redis批量查詢優(yōu)化接口”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“怎么進(jìn)行redis批量查詢優(yōu)化接口”吧!

從OpenSearch中檢索出數(shù)據(jù),然后各種填充組裝數(shù)據(jù),最后返回

邏輯看似很簡單,當(dāng)初我也是這樣認(rèn)為的,于是預(yù)估5天完成,最后前前后后開發(fā)、聯(lián)調(diào)、改bug直到上線差不多花了10天(當(dāng)然這10天并不是只做這一件事情)

復(fù)雜在于影響返回結(jié)構(gòu)的因素很多,排除問題需要檢查配置、檢查數(shù)據(jù)庫、檢查緩存、檢查OpenSearch、檢查代碼

言歸正傳,不管邏輯有多復(fù)雜,都不是你逃避問題的接口,更不是你不去優(yōu)化的理由,這不是本文的重點,優(yōu)化過程才是

要求,給APP提供的接口一般要求響應(yīng)時間在100ms以內(nèi)

第一次壓測    

怎么進(jìn)行redis批量查詢優(yōu)化接口

慘不忍睹,平均響應(yīng)時間150ms,而且在這次壓測過程中還發(fā)現(xiàn)其它的問題,后臺報錯,經(jīng)查是OpenSearch每秒查詢次數(shù)限制

優(yōu)化代碼與配置

1、修改OpenSearch配置,并且將壓測環(huán)境中的OpenSearch連接地址改為內(nèi)網(wǎng)地址

2、將代碼中循環(huán)查詢緩存的地方改為一次性批量查詢返回

3、和相關(guān)同學(xué)確認(rèn)后去掉項目中無用的代碼

第二次壓測    

怎么進(jìn)行redis批量查詢優(yōu)化接口

雖然優(yōu)化了代碼,修改了配置,但是情況更糟糕了,而且還改出了新的問題

當(dāng)時,反復(fù)檢查了代碼,確定查詢緩存的次數(shù)已經(jīng)是最少了,而且連接線程池相關(guān)參數(shù)也調(diào)到一個相對較大且合理的值了

如果,再壓測還是無法達(dá)到要求的話,只有出最后一招了:緩存結(jié)果集

即,以用戶ID和用戶搜索的關(guān)鍵詞為key,查詢的結(jié)果為value,緩存5分鐘

第三次壓測    

怎么進(jìn)行redis批量查詢優(yōu)化接口

總算符合要求了,并發(fā)60的時候響應(yīng)時間達(dá)到32ms,而我又發(fā)現(xiàn)了新的優(yōu)化點

怎么進(jìn)行redis批量查詢優(yōu)化接口

接口中居然還有查數(shù)據(jù)庫的操作,這可不能忍,排查之后去掉了一些不必要的依賴

成長    

學(xué)會了使用RedisTemplate的executePipelined進(jìn)行redis批量查詢

怎么進(jìn)行redis批量查詢優(yōu)化接口

針對本次優(yōu)化的總結(jié)    

1、一定要絕對避免循環(huán)查數(shù)據(jù)庫和緩存(PS:循環(huán)里面就不能有查詢緩存,更不能有查詢數(shù)據(jù)庫的操作,因為循環(huán)的次數(shù)沒法控制)

2、對于API接口的話,一般都是直接查緩存的,沒有查數(shù)據(jù)庫的

3、多用批量查詢,少用單條查詢,盡量一次查出來

4、對于使用阿里云,要留意一下相應(yīng)產(chǎn)品的配置,該花的錢還是得花,同時,千萬要記得正式環(huán)境中使用相應(yīng)產(chǎn)品的內(nèi)網(wǎng)地址

5、注意連接池大?。ò〝?shù)據(jù)庫連接池、Redis緩存連接池、線程池)

6、壓測的機器上不要部署其它的服務(wù),只跑待壓測的服務(wù),避免受其它項目影響;對于線上環(huán)境,最好一臺機器上只部署一個重要的服務(wù)

7、沒有用的以及被注釋掉的代碼,沒有用的依賴最好及時清理掉

8、集群自不用說

9、一些監(jiān)控類的工具工具可以幫助我們更好的定位問題,比如鏈路跟蹤,這次項目中使用了PinPoint

10、如果技術(shù)上優(yōu)化的空間已經(jīng)非常小了,可以試著從業(yè)務(wù)上著手,用實際的數(shù)據(jù)說話,可以從日常的訪問量,歷史訪問量數(shù)據(jù)來說服測試

11、每一次代碼改動都有可能引入新的問題,因此,每次修改代碼后都要回歸測試一下(PS:每次修改完以后,我都會用幾組不同的關(guān)鍵詞搜索,然后比對修改前和修改后返回的數(shù)據(jù)是否一致,這個時候postman,以及Beyond compare就派上用場了)

12、關(guān)鍵的地方一定要多加點兒日志,方便以后排除問題,因為排查線上問題最主要還是靠日志

到此,相信大家對“怎么進(jìn)行redis批量查詢優(yōu)化接口”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI