2015-11-24 40 views
0

我有一個場景,我需要每隔2分鐘將我的MySQL數據同步到Redis緩存中。每2分鐘刪除一次數據並將其插入到Redis緩存中

基本上我有2個表類別和文章表。每篇文章都屬於某個特定類別。 檢索:我需要獲取特定部分的文章,有時會限制它。

我看到Redis中提供了5個數據結構,但卻感到困惑,以至於無法選擇其中的一個,這些將適合這些需求。

每隔2分鐘將整個數據刪除並插入。

那麼最好的辦法是什麼,我可以繼續下去。

+0

你能解釋一下你爲什麼需要這個,所以我們可以做出適當的回答文章的ID?你的客戶只能從redis獲取數據?它是對可用數據進行「排序」? – khanou

+0

你可以解釋'獲取特定部分的文章,有時限制它',就像特定的類別? – Rabea

+0

我有類別和文章。數據存儲在亞馬遜MySql RDS中,每隔3分鐘和15分鐘我們就會解析rss中的 文章,並以db的形式存儲。因此,RDS不斷參與。有android,ios,手機網站要求的文章 ,所以Rest Api調用只能通過node.js web服務獲取。 我們有大約60到70個部分,每個部分我們計劃投入約100篇文章。 在移動網站中有分頁概念,所以我需要一次只提供10條記錄,而對於應用程序,每次從緩存中調用20條文章。 – Sharath

回答

2

一個建議,可以爲你的方案是爲:

  • 哈希表包含您的文章和類別。

  • 排序設置爲用作每個類別最新文章的索引。

從上面我們會:

  • 將對象添加到哈希裏面的Redis表的類別和文章。這將使您受益於平均具有恆定時間複雜性的數據結構,如here所述。

    HMSET article_with_id_{1234} field1 value1 .. etc

    HMSET category_with_id_{567} field1 value1 .. etc

  • 現在需要的結構將它們連接在一起,開始創建分類集作爲one category -> many articles,下面是一個例子:

    ZADD category_{category_id} {Sorting Score - it could be the article_id in descending order or the timestamp as you mentioned} {article ID}

現在你應該有一個你可以參考的索引ategory。因此提取數據將如下所示:

ZREVRANGE category_{category_id} 0 10 

從該類別中提取最高得分的10篇文章的有序集合。現在這也將有助於分頁。

從你收集的,可以拉物品的詳細信息,從他們的哈希與HGET

相關問題