2016-08-06 28 views
1

我正在查看使用PHP和Redis鍵值存儲設計和實現簡單Twitter克隆的doc。我發現next_post_id變量是全局的。Twitter-clone Redis全球帖子ID

我很奇怪,爲什麼不是每個用戶都只會使自己的next_post_id,以及用戶的next_post_id和他user_id可以識別一個獨特的帖子。在這種情況下,我們可以減少在同時訪問時更新next_post_id的爭用。

回答

0

Redis要求保持儘可能簡單的事情。

郵政標識符在全球範圍內增加,因爲它在概念上也是全球。每個用戶不擁有一個帖子集合,但帖子是一個全局集合,他們被分配到用戶

使用incr命令,每個連接到Redis的進程都將獲得一個唯一的標識符,因此這種策略沒有問題。

在這種情況下,我們可以減少對同時訪問

這是不正確的更新next_post_id爭,因爲Redis的是不是多線程讀取和寫入到數據庫時。它是單線程的。也就是說,沒有同時訪問,但是順序訪問。那麼,你應該意識到,做你所說的話沒有任何好處。

也許你想看看這個其他Q & A:Redis is single-threaded, then how does it do concurrent I/O?