1. 程式人生 > >4. java快取-執行緒外快取

4. java快取-執行緒外快取

執行緒外快取

執行緒外快取主要是:快取資料在同一的伺服器中,不在執行伺服器中(也可以說不在jvm執行記憶體中)。通過通訊對外提供資料的查詢,一般都是通過叢集的形式,對外提供資料快取。常見的有:ehcache、memcache、redis,最常用的有:memcache、redis。

程序外快取的作用

解決高併發、頻繁的資料訪問帶來的效能問題,通過記憶體儲存頻繁訪問的資料,降低資料獲取的時間成本。

memcache

  1. 支援多執行緒,提高讀寫效率,當然memcache基於libevent庫,支援無阻塞通訊,這也是提高讀寫效率的重要原因。
  2. 支援視訊、影象、文字等型別資料快取資料的儲存。
  3. 可以通過叢集形式部署。
  4. 通過LRU、LFU、FIFO進行快取淘汰。

redis

主要可以作為關係資料庫擴充套件的快取,尤其是物件的快取,並且提供一些快取內部的統計處理。
應用場景:

  1. 高併發、讀頻繁的web業務的資料快取。
  2. 可以作為全域性的lock(全域性時鐘),主要是基於redis的單執行緒,通過setNx的true或者false。
  3. 可以作為臨時的資料庫,例如:秒殺,通過快取解決大量請求瞬時進入DB,包括寫訂單、獲取修改商品數量。