進程內緩存是指緩存和應用程序在相同地址空間。即同一個進程內。分佈式緩存是指緩存和應用程序位於不一樣進程的緩存,一般部署在不一樣服務器上。算法
從前有個機構,機構的主人叫作 CPU,這個機構專門派僕人取一些東西而後作相應的處理。下面是這個機構平常的場景。數據庫
CPU:趕忙去個人倉庫L1緩存取點東西
僕人:主人你要的東西,那裏離咱們最近,因此很快,可是空間比較小。
CPU:你丫還挺快,只用了大約一秒
CPU:趕忙去倉庫 L2緩存取點東西
僕人:主人你要的東西,那裏離咱們也很近,比L1緩存遠一點,可是也很快,空間比較小,可是比L1緩存的空間大。
CPU:速度還能夠,大約20秒就回來了
CPU:街上有一個地方叫內存,趕忙去取點東西
僕人:主人你要的東西,內存這個地方空間很大呀,就是稍微遠了點
CPU:竟然用了5分鐘,等你這段時間我都刷了好幾個段子了
CPU:有一個叫作磁盤的小鎮,趕忙去取點東西
僕人:主人你要的東西,磁盤這個地方空間太大呀,取點東西很慢呀
CPU:竟然用了5天,等你這段時間我都能報團來一個周邊遊了
CPU:有一個叫作互聯網的國度,趕忙去取點東西
僕人:主人你要的東西,互聯網太遠了,取點東西太費勁了
CPU:竟然用了15天,等你去互聯網取東西,簡直就是在浪費個人生命緩存
當我作完一個委託人的任務,切換到另一個委託人的任務時候,我須要把上一個委託人的一些信息先記錄下來,而後還須要把新委託人的信息讀取一遍,這個過程我是很耗時的,大約須要一個小時呢服務器
以上故事純屬預估數據,真實數據會根據不一樣的硬件配置和網絡環境有偏差。網絡
經過以上不正經的小故事,咱們能夠了解到cpu取各個設備數據的大致差距。至於YY妹子的問題,你們也應該瞭解了。架構
至於什麼狀況下適合應用進程內緩存,我以爲有幾點須要注意:併發
相對於分佈式緩存,好比Redis,進程內緩存有哪些優點呢?框架
在應對高併發的狀況下,若是有適當的環境菜菜仍是以爲進程內緩存爲首選,另一點程序要儘可能避免線程切換,儘可能異步化。若是能夠最好能預估出緩存數據的大小,避免內存泄漏等現象發生。異步
固然分佈式緩存有本身的優點,在監控,容災,擴展性,易用性等方面更勝一籌。至於用進程內仍是分佈式緩存,沒有定論,能解決業務痛點就是最好的結果。分佈式