2017-05-31 84 views
1

laravel相關:緩存永遠,包括服務器重新啓動和Redis的磁盤功能

在laravel文檔,我們這寫 https://laravel.com/docs/5.4/cache

,用於存放物品

永遠

永遠的方法可用於將項目永久存儲在高速緩存 中。由於這些項目不會過期,因此必須手動將 從使用忘記方法的緩存中移除:Cache :: forever('key', 'value');如果您使用的是Memcached驅動程序,則當緩存達到其大小限制時,可能會刪除永久存儲爲 的項目。

重新啓動怎麼辦? memcache將被擦除,那麼'永遠'如何?

如此永遠並不意味着永遠,但最終只有在下一次重新啓動/崩潰之前?

怎麼樣的Redis:

,我聽到很多人贊「它可以存儲到磁盤」

好,如果是服務器的崩潰?目前是否還存儲緩存? Redis會自動處理這個問題嗎?可能不會。所以我不太明白它的優點。 「redis是否可以存儲到磁盤」是解決上述「永久」問題的解決方案?如果是這樣,你能解釋一下嗎?

+0

如果您使用緩存來保存數據,那麼您應該考慮更改您的應用程序設計。根據定義,緩存應該是臨時的,並且不應該在應用程序失效時中斷應用程序。如果你永遠在緩存中存儲東西,那麼它不是緩存,它是一個數據存儲。 – Joe

回答

1

緩存::永遠( '鍵', '值')
這意味着存儲的值,沒有任何TTL(時間到現場)。但是,當緩存大小達到其分配的大小時,先前存儲的值將被刪除。

Redis的
如果你問Redis的。它將基於配置的值存儲到磁盤。如果服務器崩潰,那麼如果您的磁盤文件沒有損壞,您也可以通過重新啓動它來查找舊數據。只有當redis空間的大小已滿或您已爲值設置ttl時,纔會刪除來自redis的舊數據。