面試過程中 訊息佇列相關問題總結

2022-07-10 19:51:07 字數 1125 閱讀 6187

在實際專案中是否用過訊息佇列?

這裡簡單介紹一下redis訊息佇列吧,之前有乙個服務號訊息推送就是用的redis來做的,因為業務比較單一所以就拿redis來做;

第一步:建立推送任務;

1.區分任務是即時任務還是延時任務;

2.如果是延時任務可以使用zset(key,time,val),因為zset 是有序列表 可以通過分鐘值排序,不會像list先進先出或者先進後出;

3.即時任務會將任務新增到list列表中。

4.消費指令碼 看延時任務裡是否有當前時間任務,如果有將延時任務push到正常任務中;

5.正常任務會pop出一條任務進行處理;

其實你要明白:有業務-》生產-》消費;圍繞這個維度你就很好理解了

例如:現在有乙個課前半小時簡訊推送需求;

1.是乙個延時任務(zset)

2.需要消費端一直保持待消費狀態(死迴圈)

3.有訊息就要pop出任務,傳送到後端進行推送處理;

這裡邊有幾個點注意

1.處理延時任務時需要加redis鎖 setnx(key,time),如果鎖已存在判斷鎖是不是死鎖並刪除鎖;

2.查詢延時任務中資料zrangebyscore (key,'-inf',time,[limit=>[0,50])

3.將讀取出的任務使用事務push 到正常佇列中去,並且刪除集合中資料zrem(key, $job);

zset 跟list 的區別?

1.zset 是種有序集合,他的值是不可以重複的,並且它可以通過分值進行大小排序;

2.list是一種鍊錶資料結構,是雙向的,兩邊都可以操作

他們的資料結構都是怎樣的?

動態字串、鍊錶、字典、跳躍表、整數集合、壓縮列表

鍊錶:有前置節點、後置節點、節點值 (可以實現乙個雙向鍊錶)

字典 :雜湊表結構,陣列中包含陣列的大小,節點上都存著鍵值對,值可以是(指標、整數)next指標指向節點上其他雜湊值相同的鍵值對;

跳躍式表:zskiplist 都有表頭位元組、表尾位元組指標、 總的分層、;每個節點儲存的前進的指標、鍊錶分層級別、分值、key/val是以雜湊表結構儲存的;

參考:

面試過程中

面試過程中,面試官會向應聘者發問,而應聘者的回答將成為面試官考慮是否接受他的重要依據。對應聘者而言,了解這些問題背後的 貓膩 至關重要。本文對面試中經常出現的一些典型問題進行了整理,並給出相應的回答思路和參 讀者無需過分關注分析的細節,關鍵是要從這些分析中 悟 出面試的規律及回答問題的思維方式,達到...

面試過程中遇到的面試問題

c 常見的四種強制型別轉換有哪些?常見的型別轉換是在要轉換的型別前面加上括號和要轉換的型別。這樣就有乙個規則即像站姿結束多的自動轉換,例如int型別和float相加時,結果自動轉換為float型別。例如int a 1 char p char a 以上這種形式是c語言的形式,如果換做c 的話常用的形式...

測試面試過程中的幾點困惑

最近在面試中遇到了很多困惑和無奈,筆者總結了幾條,與諸君分享。順便也談談筆者對面試的一些淺解。困惑二 我覺得 怪圈。很多人在面試的溝通中,非常喜歡用 我覺得 來開始回答問題。因為我比較喜歡用非常具體的場景來提問,那麼在該場景中按照邏輯上來講,必然存在著確切的因果關係或特定的解決方法。如果一切都是 我...