我建立多個行程去同時讀取redis做的訊息佇列 請問這個會發生讀取衝突麼? 原因是什麼呢?
认证高级PHP讲师
不會衝突,佇列中的每個元素只會被讀取一次。
只是讀取沒問題。 。 。
redis自己保證隊列讀寫的互斥。 redis是單線程,運作方式大概是這樣的。你的多進程讀取其實是可以並行發多個讀取請求包,這些請求包到達redis的socket buffer中,redis的處理是串行響應你的請求,無鎖。如果哪天redis改成多執行緒的方式,同樣可以透過加鎖互斥來保證佇列的讀取不會出事情。
不會衝突,佇列中的每個元素只會被讀取一次。
只是讀取沒問題。 。 。
redis自己保證隊列讀寫的互斥。 redis是單線程,運作方式大概是這樣的。你的多進程讀取其實是可以並行發多個讀取請求包,這些請求包到達redis的socket buffer中,redis的處理是串行響應你的請求,無鎖。如果哪天redis改成多執行緒的方式,同樣可以透過加鎖互斥來保證佇列的讀取不會出事情。