2013-08-20 69 views
1

如果我想構建一個RSS閱讀器,那麼在MySQL中插入所有提要對於數據庫服務器來說太重了,這是CPU密集型的。構建一個RSS閱讀器

那麼,如果有Redis或cassandra,MySQL服務器與Apache幫助減少MySQL服務器上的負載?

+0

redis不是魔術子彈,你知道的。 –

+0

@SergioTulentsev我知道,redis會來推/拉飼料,而不是讓db去做。 – X10nD

+0

現代數據庫比您想象的要快。 –

回答

2

簡答:是的,但會增加複雜性。

長答案:如果MySQL對你來說速度不夠快(並且我會首先證實這實際上是在添加Redis複雜性之前的情況),那麼可以拋出一些更頻繁的更新/插入加載到Redis上。有幾個方法可以做到這一點(你不必在這裏做的一切,但每一件事情都會有負荷的幫助):

  1. 對於每個用戶都有一個Redis的發佈/訂閱通道。只要將某項內容添加到用戶的供稿中,就直接發佈給它。讓RSS客戶端訂閱這個頻道,所以如果用戶打開他或她的RSS閱讀器,他們應該只訂閱他們的發佈/訂閱頻道以獲取更新,並且從不讀取MySQL。

  2. 批量插入到MySQL:如果你有重寫卷,不忍受插入MySQL的每一次新的東西應該被添加到飼料中的網絡流量和鎖定/解鎖和查詢的開銷。相反,將所有新項目保存在每個用戶緩存中。然後清空緩存並每隔n秒進行一次批量寫入。根據需要設置n以滿足您的用例。每個用戶

  3. 緩存提要:如果你的閱讀量,儘管1號非常高,緩存Redis的每個用戶的最後一個n項對於m秒(組n和m這正適合你的使用情況)。緩存這些最好的方法很可能是一個字符串。如果出於某種原因需要更多動態訪問權限,請使用列表。用戶只有在緩存不可用時才應從MySQL讀取。