快取

1/53ページ

資料傳輸壓縮,節約頻寬

最近專案上,把Memcache替換成了Redis,在這個過程中我們遇到了一些問題。 我們為了優化DB,降低DB的負載,把DB的查詢結果集存入到了Redis,但是上線的時候爆發了一個問題,就是大量的DB查詢結果進入Redis,導致大量的讀取的時候把Redis於程式碼伺服器之間的內網頻寬佔滿,最後我們把 […]

帶快取和不帶快取操作和程序總結

總結: 1、建立檔案的三種方式 ①creat函式:用於建立一個檔案 ②open函式,O_CREAT模式用於建立一個檔案   2、比較read和feof 同:可以判斷是否到了檔案尾(read函式:在檔案結束或者無資料的時候,返回為0;feof函式:返回非0表示到了檔案尾) 異:read是不帶緩衝的,基 […]

快取,究竟是淘汰,還是修改?(轉)

允許cache miss的場景,不管是memcache還是redis,當被快取的內容變化時,是改修改快取,還是淘汰快取?這是今天將要討論的話題。 問:KV快取都快取了一些什麼資料?答:(1)樸素型別的資料,例如:int(2)序列化後的物件,例如:User實體,本質是binary(3)文字資料,例如: […]

快取重新整理術之保證資料一致性

1. 概述 在上一篇文章《快取讀取術之防止快取雪崩》裡我們解決了引入快取後讀資料的問題,本文分析寫資料要考慮的問題。資料變更時是更新快取還是淘汰快取?是先寫DB再寫Cache,還是先寫Cache再寫DB?如何考量?另外,如果寫DB成功了但寫Cache失敗了,資料就會不一致,如何解決?下面逐一探討。 […]

使用Spring4.3解決快取過期後多執行緒併發訪問資料庫的問題

快取過期之後,如果多個執行緒同時請求對某個資料的訪問,會同時去到資料庫,導致資料庫瞬間負荷增高。Spring4.3為@Cacheable註解提供了一個新的引數“sync”(boolean型別,預設為false),當設定它為true時,只有一個執行緒的請求會去到資料庫,其他執行緒都會等待直到快取可用。 […]

高併發下的無鎖快取

描述兩個場景 1、為了反作弊,我們需要實時的統計某個使用者訪問某個url的次數,每次使用者訪問這個url,訪問次數就會增加,如果這個使用者訪問的url次數超過一定的數量限制,就挑選出這樣的使用者,認為這個使用者有作弊的可能 2、現在有很多跑步軟體,可以記錄你步行的軌跡,實時的記錄你的位置,類似這樣的 […]

快取架構設計細節之“淘汰快取”還是“更新快取”

本文主要討論這麼幾個問題: (1)“快取與資料庫”需求緣起 (2)“淘汰快取”還是“更新快取” (3)快取和資料庫的操作時序 (4)快取和資料庫架構簡析   一、需求緣起 場景介紹 快取是一種提高系統讀效能的常見技術,對於讀多寫少的應用場景,我們經常使用快取來進行優化。 例如對於使用者的餘額資訊表a […]

快取更新的正確姿勢

看到好些人在寫更新快取資料程式碼時,先刪除快取,然後再更新資料庫,而後續的操作會把資料再裝載的快取中。然而,這個是邏輯是錯誤的。試想,兩個併發操作,一個是更新操作,另一個是查詢操作,更新操作刪除快取後,查詢操作沒有命中快取,先把老資料讀出來後放到快取中,然後更新操作更新了資料庫。於是,在快取中的資料 […]

快取和資料庫重新整理的順序 及阿里OCS介紹

快取失效一致性問題 一般快取的使用方式是:先讀取快取,若不存在則從DB中讀取,並將結果寫入到快取中;下次資料讀取時便可以直接從快取中獲取資料。 資料的修改是直接失效快取資料,再修改DB內容,避免DB修改成功,但由於網路或者其他問題導致快取資料沒有清理,造成了髒資料。 但這樣仍然無法避免髒資料的產生, […]

十個常見的快取使用誤區及建議

Omar Al Zabir的《Ten Caching Mistakes that Break your App》這篇文章已經發表好多年了,但是它仍然指導著大家如何合理、高效的使用快取。在日常工作中,開發者經常利用快取來優化站點或應用程式,然而在實際應用中,大家使用快取時,總會存在或多或少的誤區,反而 […]