個人認為,能不用SESSION,儘量不用SESSION吧,因為SESSION有單機的問題,不適合叢集,而且SESSION的回收清理也不太方便,很容易受到攻擊,比如說用SESSION記錄驗證碼,如果有人CC攻擊驗證碼,就會產生很多垃圾資料.PHP預設是一個SESSION對應一個磁碟檔案.Ubuntu/Debian上apt安裝的PHP會帶有一個定時任務/etc/cron.d/php5來清理會話檔案.即使用Redis儲存PHP SESSION,並設定了過期時間,也只能依賴Redis週期性隨機檢測這種被動的過期機制來清除會話記錄(有殘餘).
Memcached作者說過,Memcached不適合存SESSION,因為Memcached預設的LRU清理機制會在記憶體不足時清理掉一些記錄,可能會導致使用者無緣無故地掉線.Redis預設設定是noeviction(不收回),記憶體不夠直接報錯.
個人認為,能不用SESSION,儘量不用SESSION吧,因為SESSION有單機的問題,不適合叢集,而且SESSION的回收清理也不太方便,很容易受到攻擊,比如說用SESSION記錄驗證碼,如果有人CC攻擊驗證碼,就會產生很多垃圾資料.PHP預設是一個SESSION對應一個磁碟檔案.Ubuntu/Debian上apt安裝的PHP會帶有一個定時任務/etc/cron.d/php5來清理會話檔案.即使用Redis儲存PHP SESSION,並設定了過期時間,也只能依賴Redis週期性隨機檢測這種被動的過期機制來清除會話記錄(有殘餘).
Memcached作者說過,Memcached不適合存SESSION,因為Memcached預設的LRU清理機制會在記憶體不足時清理掉一些記錄,可能會導致使用者無緣無故地掉線.Redis預設設定是noeviction(不收回),記憶體不夠直接報錯.