2013-09-25 67 views
1

基本上這裏的設置:緩存分頁數據滾動界面,避免客戶端複製

你有很多的市場項目,要通過價格來排序。如果某人瀏覽時緩存過期,他們會突然顯示潛在的重複條目。這似乎是一個非常糟糕的公共API經驗,我們正在尋求避免這個問題。

我所看到的一些基本理念包括:

  • reddit的公司,他們在跟蹤客戶端看到的最後一個ID,但他們仍然處理重複。
  • 將分頁,這是一個簡單的實現,根據您要返回的項目多,並且基本上返回結果的偏移
  • 再就是涉及Redis的許多不同的解決方案,有序集合,等等。但是這些還沒有真正解決如何刪除重複條目

有沒有人有一個相當可靠的方式來處理分頁,動態列表沒有重複分頁?

回答

1

如果您需要分頁的項目已正確排序(使用唯一值),那麼您唯一需要做的就是按該值而不是按偏移量選擇結果。

簡單的SQL例如

SELECT * FROM items LIMIT 10; /*page 1*/ 

可以說,列#10 ID = 42(id是主鍵)

SELECT * FROM items WHERE id < 42 LIMIT 10; /* page 2*/ 

如果您正在使用PostgreSQL(可能是MySQL有同樣的問題)這也解決了使用OFFSET在性能方面糟糕的問題(OFFSET N LIMIT M需要掃描N行!)

如果排序不是唯一的(例如,對創建時間戳進行排序可能導致到多個項目同時創建)你將有重複問題