溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP中redis和memcache區(qū)別是什么

發(fā)布時間:2020-09-15 10:25:16 來源:億速云 閱讀:118 作者:小新 欄目:關系型數(shù)據(jù)庫

這篇文章給大家分享的是有關PHP中redis和memcache區(qū)別是什么的內容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。

PHP中redis和memcache區(qū)別

PHP中memcached 和 redis 都很類似:都是內存型數(shù)據(jù)庫,數(shù)據(jù)保存在內存中,通過tcp直接存取,優(yōu)勢是速度快,并發(fā)高,缺點是數(shù)據(jù)類型有限,查詢功能不強,一般用作緩存。

那么題主說 memcached 的事情 redis 都可以做,那么為什么 memcached 還有人用?那是因為它們兩者并不是完全可以相互替代的,它們也有各自的長短優(yōu)缺點:

Memcached

Memcached的優(yōu)點:

Memcached可以利用多核優(yōu)勢,單實例吞吐量極高,可以達到幾十萬QPS(取決于key、value的字節(jié)大小以及服務器硬件性能,日常環(huán)境中QPS高峰大約在4-6w左右)。

適用于最大程度扛量,有效為服務器減壓。

支持直接配置為session handle。

配置維護的坑比較少。

Memcached的局限性:

數(shù)據(jù)結構很簡單單一,只支持簡單的key/value數(shù)據(jù)結構,不像Redis可以支持豐富的數(shù)據(jù)類型。

無法進行持久化,數(shù)據(jù)不能備份,只能用于緩存使用,且重啟后數(shù)據(jù)全部丟失。

無法進行數(shù)據(jù)同步,不能將MC中的數(shù)據(jù)遷移到其他MC實例中。

Memcached內存分配采用Slab

Allocation機制管理內存,value大小分布差異較大時會造成內存利用率降低,并引發(fā)低利用率時依然出現(xiàn)踢出等問題。需要用戶注重value設計。

memcached服務端原生不支持水平擴展,必須在客戶端編寫緩存分布策略來實現(xiàn)分布式緩存,并且由于無法進行數(shù)據(jù)同步,因此生產環(huán)境中出現(xiàn)單機故障時可能會影響部分業(yè)務運行。

Redis

Redis的優(yōu)點:

支持多種數(shù)據(jù)結構,比如 string(字符串)、

list(雙向鏈表)、dict(hash表)、set(集合)、zset(排序set)、hyperloglog(基數(shù)估算)等等。

支持持久化操作,可以進行aof及rdb數(shù)據(jù)持久化到磁盤,從而進行數(shù)據(jù)備份或數(shù)據(jù)恢復等操作,較好的防止數(shù)據(jù)丟失的手段。

支持通過Replication進行數(shù)據(jù)復制,通過master-slave機制,可以實時進行數(shù)據(jù)的同步復制,支持多級復制和增量復制,master-slave機制是Redis進行HA的重要手段。

單線程請求,所有命令串行執(zhí)行,并發(fā)情況下不需要考慮數(shù)據(jù)一致性問題。

支持pub/sub消息訂閱機制,可以用來進行消息訂閱與通知。

支持簡單的事務需求,但業(yè)界使用場景很少,并不成熟。

Redis的局限性:

Redis只能使用單線程,性能受限于CPU性能,故單實例CPU最高才可能達到5-6wQPS每秒(取決于數(shù)據(jù)結構,數(shù)據(jù)大小以及服務器硬件性能,日常環(huán)境中QPS高峰大約在1-2w左右)。

支持簡單的事務需求,但業(yè)界使用場景很少,并不成熟,既是優(yōu)點也是缺點。

Redis在string類型上會消耗較多內存,可以使用dict(hash表)壓縮存儲以降低內存耗用。

總結

在我看來,Redis在很多方面具備數(shù)據(jù)庫的特征,或者說就是一個數(shù)據(jù)庫系統(tǒng),而Memcached只是簡單的K/V緩存。

而且到底是用 redis 還是 memcached 這個還是看題主的需求,因為單純是做緩存的話,memcached已經足夠應付絕大部分的需求,redis 的出現(xiàn)只是提供了一個更加好的選擇,但是不代表redis就能完全替代 memcached ,還是那句話,看你的需求是怎么樣的。

按照技術的新舊來講,redis 比 memcached 還更加新,但是成熟醒來說,memcached 應該更加好,再說現(xiàn)在潮流也有開始轉投 mongodb了,因為redis 的數(shù)據(jù)庫特征,mongodb更勝一籌。

很多公司的緩存策略中使用memcached的還是占大多數(shù)的,再者是redis,最后才是mongodb,發(fā)現(xiàn)沒有,最新的技術在公司團隊的應用還是需要時間的,舊的技術策略還是很多公司團隊在用,因為技術成型而且穩(wěn)定性要好,這也是memcached比redis要被提及的更多的原因。

感謝各位的閱讀!關于PHP中redis和memcache區(qū)別是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI