2009-10-09 123 views
4

哪一種方法能夠以這三種方式之一實現快速散列/會話存儲?緩存數據與寫入內存表

方法1: 創建MySQL中的存儲表,用於存儲哈希,當創建條目的時間戳。 MySQL事件會自動刪除超過20分鐘的所有條目。這應該是非常快的,因爲所有數據都存儲在內存中,但連接到數據庫服務器的開銷可能會破壞這種優勢。

方式2: 我創建哈希作爲其文件名的空文件,並創建一個cronjob自動刪除超過20分鐘之前的所有文件。由於硬盤上的所有讀操作,這可能會變慢。

方式三: 由於這將是PHP相關的,我們使用Zend框架我可以使用Zend_Cache是​​和散列存儲與時間到現場的20分鐘。

我不想爲此使用Memcached或APC,因爲我認爲這對於一些小的哈希來說是一個很大的開銷。

你有類似場景的經驗嗎?我很感謝你的經驗和解決方案。

+1

Your * way 2 *是PHP的默認會話處理程序正在執行的操作。 – Gumbo 2009-10-09 15:23:35

+0

是的。但是有一個很大的開銷嗎?由於性能問題,高性能應用程序是否針對默認會話處理程序做出決定? – 2009-10-09 15:28:56

回答

1

如果性能是一個問題,我會堅決使用memcached。所有大型互聯網站都依靠memcached來緩存服務器密集型任務,甚至會話存儲和鎖定機制。

Memcached是如果你問我

+0

雖然我不使用Memcached。我爲APC決定,因爲它是那麼多的數據。 – 2009-10-11 07:44:41

0

不要重新發明輪子 - 使用memcache。要麼,要麼測量你的MySQL性能與Memcache。請記住,無論如何,數據庫訪問通常總是高性能環境的瓶頸。

0

你認爲還擴展問題與所有這些方法的路要走?你談論多少哈希?你談論多少兆字節的數據?

  1. 保持在您的計算機的內存,如果你能(你的變型3)
  2. 把它放在磁盤上,但如果你可以將它放在內存(你的變形2,如果使用基於文件的會話,你可以使用$ session中有人指出)
  3. 使用數據庫

你有大量的數據?使用memcached。

0

正如其他人所說,使用memcached。如果PHP支持數據庫連接池,比如Java,我會推薦MySQL,但是PHP就是它,memcached是唯一真正的答案。