標籤:案例 函數 大數 熱點 2.4 bsp 分析 weight hit
第2章 使用 Redis構建Web應用
本章主要內容 1.登入cookie2.購物車cookie3.緩衝產生的網頁4.快取資料庫行5.分析網頁訪問記錄 本章的所有內容都是圍繞著發現並解決Fake Web Retailer這個虛構的大型網上商店來展開的, 這個商店每天都會有大約500萬名不同的使用者, 這些使用者會給網站帶來1億次點擊, 並從網站購買超過10萬件商品。 我們之所以將Fake Web Retailer的幾個資料量設定得特別大, 是考慮到如果可以在大資料量背景下順利地 章列舉的所有解決方案(以及它們的一些變種) 都在生產環境中實際使用過。 說得更具體一點, 通過將傳統資料庫的一部分資料處理任務以及儲存任務轉交給Redis來完成, 2.1 登入和cookie緩衝每當我們登入互連網服務(比如銀行賬戶或者電子郵件) 的時候,這些服務都會使用cookie來記錄我們的身份。 cookie由少量資料群組成,網站會要求我們的瀏覽器儲存這些資料, 並在每次發送請求時將這些資料傳回給服務。對於用來登入的cookie, 有兩種常見的方法可以將登入資訊儲存在cookie裡面: 一種是簽名( signed) cookie, 另一種是令牌( token) cookie。 簽名 cookie通常會儲存使用者名稱, 可能還有使用者識別碼、 使用者最後一次成功登入的時間, 以及網站覺得有用的其他任何資訊。 除了使用者的相關資訊之外, 簽名 cookie還包含一個簽名, 伺服器可以使用這個簽名來驗證瀏覽器發送的資訊是否未經改動(比如將cookie中的登入使用者名稱改成另一個使用者) 。 令牌 cookie會在cookie裡面儲存一串隨機位元組作為令牌, 伺服器可以根據令牌在資料庫中尋找令牌的擁有者。 隨著時間的推移, 舊令牌會被新令牌取代。
案例:使用Redis重新實現登入cookie功能, 取代目 前由關聯式資料庫實現的登入cookie功能。 1.一個散列來儲存登入cookie令牌與已登入使用者之間的映射2.使用者每次瀏覽頁面的時候, 程式都會對使用者儲存在登入散列.裡面的資訊進行更新, 並將使用者的令牌和目前時間戳添加到記錄最近登入使用者的有序集合裡面; 如果使用者正在瀏覽的是一個商品頁面, 那麼程式還會將這個商品添加到記錄這個使用者最近瀏覽過的商品的有序集合裡面, 並在被記錄商品的數量超過25個時, 對這個有序集合進行修剪。3.因為儲存會話資料所需的記憶體會隨著時間的推移而不斷增加, 所以我們需要定期清理舊的會話資料 2.2 使用 Redis實現購物車將購物車的資訊也儲存到Redis裡面, 並且使用與使用者會話cookie相同的cookie ID來引 用購物車。 2.3 網頁緩衝 2.4 資料行緩衝為了應對促銷活動帶來的大量負載, 我們需要對資料行進行緩衝,具體的做法是: 編寫一個持續啟動並執行守護進程函數, 讓這個函數將指定的資料行緩衝到Redis裡面, 並不定期地對這些緩衝進行更新(熱點緩衝?) 2.5 網頁分析有序集合排序
redis實戰筆記(2)-第2章 使用 Redis構建Web應用