我正在研究PHP中的一些舊(ish)軟件,它維護一個$ cache數組以減少SQL查詢的數量。我正在考慮將memcached放在原位,我想知道是否要擺脫內部緩存。如果我保持內部緩存,或者memcached足夠了,那麼仍然會有值得的性能提升嗎?Memcached與PHP中的內部緩存?
回答
memcache(在金屬上實現)似乎可能比一些php解釋緩存方案更快。
但是:如果沒有損壞,請不要修復它。
如果您刪除自定義高速緩存代碼,則可能需要處理其他依賴於高速緩存的代碼。我不能說你必須維護的代碼的質量,但它似乎是那些「可能不值得」的東西之一。
讓我這樣說:您是否相信原始開發人員已經編寫了代碼,如果您撕掉緩存,這些代碼仍然可以工作?(我可能不會)
所以,除非現有的緩存給你的問題,我會建議不要把它拿出來。
您如何看待Memcache將比解釋系統更快(一般情況下)?它涉及到TCP通信...... Memcache比查詢數據庫要快,因爲它們都訪問了網絡,但它不一定比從磁盤讀取一個php文件更快('foo = include('myfoofile.php');'where myfoofile。 php包含'<?php返回數組('blah','blah','blah');')。兩者都需要分配內存,但只有php文件可以利用本地操作碼緩存... – ircmaxell 2010-06-14 14:14:06
偉大的建議......情況是,主要開發人員離開了我(新人!)亂七八糟的無證代碼。緩存根本沒有封裝,它是代碼中引用數千次的全局變量,真正影響可讀性和不良設計的可讀性,所以從體系結構的角度來看(在我看來!)它被破壞了:-) – bcoughlan 2010-06-14 15:01:10
@ircmaxell:我假設兩人都打網絡,因爲他的問題是關於數據庫訪問。 – Kris 2010-06-14 15:20:36
有沒有在使用內存緩存VS如果本地緩存的優勢:
1)你有逃跑相同的數據庫多張網絡服務器,並已內存緩存設置爲跨多個節點
2)數據庫不運行不執行查詢結果緩存或訪問速度很慢
否則,除非緩存代碼非常差,否則您不應該期望看到很多性能優勢。
HTH
C.
根據this博客文章,PHP的內部數組比任何其他方法更快的方式:
Cache Type Cache Gets/sec
Array Cache 365000
APC Cache 98000
File Cache 27000
Memcached Cache (TCP/IP) 12200
MySQL Query Cache (TCP/IP) 9900
MySQL Query Cache (Unix Socket) 13500
Selecting from table (TCP/IP) 5100
Selecting from table (Unix Socket) 7400
我有很多這樣的陣列式緩存。它確實更快。但是,我正在慢慢地介紹MemCache,原因有兩個: 1)這些數組中的一些以某種方式在其他腳本中複製,使用MemCache將統一此 2)。即使數組速度更快,它們也會消耗內存,數組越大,內存越多。 MemCache足夠快。 **總之:對我而言,我決定使用MemCache。有時候我會保持一段時間,幾個星期後添加TODO評論並刪除陣列。希望這有幫助 – tanovellino 2018-01-03 09:13:21
Redis也非常有趣,特別是能夠將數據存儲在磁盤上,並且可以輕鬆同步多個服務器之間的數據。 如果你想用php實現高性能,那麼我建議查看[Swoole](https://github.com/swoole/swoole-src)。對於任何緩存頁面,響應時間都非常短(在我的電腦上,redis緩存的html頁面在swoole中加載時間約爲2ms,而不是傳統php7中的~10ms--服務器是[h2o](https:// h20)。 examp1e.net/)在這兩種情況下,頁面被加載到Firefox中)。 – 2018-01-03 13:22:26
- 1. 與memcached緩存
- 2. 與Memcached Laravel緩存問題
- 3. 與memcached magento全頁緩存
- 4. 建議memcached的緩存/內存大小?
- 5. PHP memcached的致命錯誤:類「內存緩存」未找到
- 6. Memcached + Spring緩存
- 7. Rails Memcached緩存
- 8. 與memcached的PHP會話。 session_destroy()不會刪除內存緩存條目
- 9. PHP - Memcached的:MySQL的資源緩存
- 10. Memcached中的多個緩存
- 11. 緩存Memcached中的圖像
- 12. PHP有內部緩存嗎?
- 13. nginx的緩存響應與memcached的
- 14. 獲得與Dalli和memcached的緩存值
- 15. memcached緩存請求?
- 16. 在memcached中的Scrapy HTTP緩存存儲
- 17. 春季緩存不與Memcached合作
- 18. php-memcached是否有任何本地緩存緩存?
- 19. Memcached上的光油緩存
- 20. Drupal:視圖緩存和memcached
- 21. Memcached/XCache緩存SQL結果?
- 22. Memcached vs SQL Server緩存
- 23. memcached和django緩存混淆
- 24. Php部分緩存
- 25. PHP,MySQL內存數據庫和memcached
- 26. Memcached內存泄漏
- 27. DbContext的內部緩存(?)
- 28. 如何將元組緩存到memcached中?
- 29. 從Memcached/Dalli緩存中排除圖像
- 30. Smarty在memcached中壓縮模板緩存
基準應用程序的範圍內,不同的方法和走着瞧吧。 – salathe 2010-06-14 14:08:44
它如何維護頁面瀏覽中的'$ cache'數組?它被序列化爲一個文件嗎?它是否存儲在APC/Eaccelerator/Memcached/DB/etc中? – ircmaxell 2010-06-14 14:10:02
看來目前的方法是無用的,需要審查。 緩存在一個腳本運行時中有什麼用處?它看起來比緩存中真正需要的設計更差。 這個應用程序真的需要任何緩存嗎? – 2010-06-14 14:32:24