轉自:https://tech.meituan.com/2017/03/17/cache-about.html
1.介紹
- 在主頁中顯示最新的專案列表:Redis使用的是常駐記憶體的快取,速度非常快。LPUSH用來插入一個內容ID,作為關鍵字儲存在列表頭部。LTRIM用來限制列表中的專案數最多為5000。如果使用者需要的檢索的資料量超越這個快取容量,這時才需要把請求傳送到資料庫。查詢前N個,可以使用lrange命令。
- 刪除和過濾:如果一篇文章被刪除,可以使用LREM從快取中徹底清除掉。
- 排行榜及相關問題:排行榜(leader board)按照得分進行排序。ZADD命令可以直接實現這個功能,而ZREVRANGE命令可以用來按照得分來獲取前100名的使用者,ZRANK可以用來獲取使用者排名,非常直接而且操作容易。
-
按照使用者投票和時間排序:排行榜,得分會隨著時間變化。LPUSH和LTRIM命令結合運用,把文章新增到一個列表中。一項後臺任務用來獲取列表,並重新計算列表的排序,ZADD命令用來按照新的順序填充生成列表。列表可以實現非常快速的檢索,即使是負載很重的站點。
過期專案處理:使用Unix時間作為關鍵字,用來保持列表能夠按時間排序。對current_time和time_to_live進行檢索,完成查詢過期專案的艱鉅任務。另一項後臺任務使用ZRANGE…WITHSCORES進行查詢,刪除過期的條目。
計數:進行各種資料統計的用途是非常廣泛的,比如想知道什麼時候封鎖一個IP地址。INCRBY命令讓這些變得很容易,透過原子遞增保持計數;GETSET用來重置計數器;過期屬性用來確認一個關鍵字什麼時候應該刪除。
特定時間內的特定專案:這是特定訪問者的問題,可以透過給每次頁面瀏覽使用SADD命令來解決。SADD不會將已經存在的成員新增到一個集合。
Pub/Sub:在更新中保持使用者對資料的對映是系統中的一個普遍任務。Redis的pub/sub功能使用了SUBSCRIBE、UNSUBSCRIBE和PUBLISH命令,讓這個變得更加容易。
佇列:在當前的程式設計中佇列隨處可見。除了push和pop型別的命令之外,Redis還有阻塞佇列的命令,能夠讓一個程式在執行時被另一個程式新增到佇列。
// 有些不太明白的,先貼了。