我想將數據結構持久地存儲在RAM中,並使用Perl中的預分支 Web服務器進程訪問它。尋找一個Perl模塊將哈希結構存儲在共享內存中
理想情況下,我希望它的行爲像memcached,但不需要單獨的守護進程。有任何想法嗎?
我想將數據結構持久地存儲在RAM中,並使用Perl中的預分支 Web服務器進程訪問它。尋找一個Perl模塊將哈希結構存儲在共享內存中
理想情況下,我希望它的行爲像memcached,但不需要單獨的守護進程。有任何想法嗎?
IPC::SharedMem可能符合法案。
使用Cache::FastMmap並且您需要的只是一個文件。它使用mmap爲IPC提供共享內存緩存,這意味着它非常快速。請參閱文檔以瞭解可能的問題和注意事項。
Mod_perl在正確實施寫時複製分叉的系統上共享RAM。在您的mod_perl程序的BEGIN塊中加載Perl哈希,並且只要沒有寫入存儲哈希的頁面,mod_perl程序的所有分叉實例就會共享內存。這並不完美(有些頁面會被寫入),但在我的服務器和數據上,它將內存使用量減少了70-80%。
Mod_perl還通過消除後續Web請求上的Perl編譯時間來加快服務器的速度。 mod_perl的缺點是你必須謹慎編程,並避免修改全局變量的程序,因爲這些變量(比如你的哈希)是由所有mod_perl實例共享的。學習足夠的Perl是值得的,因此無需改變全局變量!
mod_perl的性能提升非常棒,但mod_perl在許多共享主機中不可用。在你學習的時候很容易搞砸,很難調試。我只有在性能提升得到我的客戶的充分讚賞以證明我的發展痛苦時才使用它。