memcached是什么 memcached最新版本
大家好,今天來為大家解答memcached是什么這個問題的一些問題點,包括memcached最新版本也一樣很多人還不知道,因此呢,今天就來為大家分析分析,現在讓我們一起...
大家好,今天來為大家解答memcached是什么這個問題的一些問題點,包括memcached最新版本也一樣很多人還不知道,因此呢,今天就來為大家分析分析,現在讓我們一起來看看吧!如果解決了您的問題,還望您關注下本站哦,謝謝~
Redis和Memcached各有什么優(yōu)缺點主要的應用場景是什么
根據我的經驗,在BAT里,redis已經逐漸取代了memcached,成為分布式場景廣泛使用的緩存方案。接下來,我們就分析下,redis是如何取代memcached,成為開發(fā)者的寵兒的。
支持的存儲類型不同雖然都是內存數據庫,memcached不僅能夠存儲string,還能夠存儲圖片,視頻等形式的文件。然而對于更多的使用內存數據庫做緩存以及分布式方案的程序開發(fā)者來說,memcached提供的string格式存儲,應用場景有限,而存儲圖片視頻的功能又十分雞肋(主要是沒這方面需求)。相比之下,redis提供set,hash,list等多種類型的存儲結構,對于做分布式緩存實在是再適合不過了。
數據落盤雖然大多數人使用緩存以及分布式方案都不會要求數據持久化,但是誰也不能保證不出現萬一的情況。一旦發(fā)生穩(wěn)定性問題,memcached掛掉后,數據是不可恢復的,而redis除了支持在配置里打開數據落盤(RDB),還能通過aof來找回數據。
內存空間與數據量memcached可以修改最大內存,使用的是LRU算法,而redis目前底層使用了自己的VM,引入了新的特性突破了物理內存的限制。個人認為在這方面依然是redis更加優(yōu)秀一些。
使用場景基于以上提到的特點,基本我們就能分清redis與memcached的場景了。
如果對緩存數據類型超越了基本的數據結構,需要圖片或者視頻,多讀少寫,且數據量非常大的場景,那么一定要用memcached而不是redis了(比如微博大量查詢好友信息,微博信息等,但是不是說微博用的是memcached方案哦)。
但是如果是對緩存的數據格式有更多的要求,且對安全性也有很高的要求的話,建議還是使用redis,這也是redis目前正在逐漸代替memcached的根本原因。
以上是我的淺見,歡迎各位在下方評論區(qū)與我溝通。
我是蘇蘇思量,來自BAT的Java開發(fā)工程師,每天分享科技類見聞,歡迎關注我,與我共同進步。
Guava、Memcached和Redis,選哪個比較好
簡單來說,Redis就是一個數據庫。
不同于傳統(tǒng)數據庫將數據保存在磁盤中,Redis將數據存在內存中,所以它也經常被叫做內存數據庫;同時Redis存儲也被叫做NoSQL數據庫、非關系型數據庫。
因為Redis將數據保存在內存中,所以讀寫速度會非常快,因此Redis被廣泛應用做緩存或其他需要高速讀寫的場景。
為什么要使用Redis軟件架構中引入Redis,是因為它“又快又強”。
1.快,是指性能高
計算機硬件的速度由低到高:硬盤-網絡-內存-CPU;
在傳統(tǒng)的數據庫中,如果第一次訪問數據庫中的某條數據,通常是比較慢的,因為數據庫需要從硬盤上讀取數據;而Redis中的數據保存在了內存中,所以速度會比從磁盤中讀取數據快得多。
所以我們經常把Redis當做緩存:第一次從數據庫中讀取數據,并放入Redis,后面直接訪問Redis就可以了。
2.強,是指高并發(fā)場景下的穩(wěn)定性(高可用)
在高并發(fā)的場景下,Redis能夠承受的訪問極限,是遠遠大于數據庫的,所以我們可以考慮把需要高并發(fā)讀的數據放到Redis中;
比如秒殺功能,短短幾秒內可能就會有數十萬筆的訪問,如果直接操作數據庫的話,數據庫可能瞬間就被擊垮了。
哪些場景不適合放入Redis當然,也不是說所有的場景、所有的數據都適合放進Redis中,通常我們需要考慮以下幾點:
數據查詢的命中率高么?如果緩存的命中率很低,沒有必要放入到Redis中;數據讀寫操作多么?如果數據會被頻繁寫入(增、改、刪),設置寫操作次數大于讀操作次數,那么也沒有必要使用Redis;業(yè)務數據大小如何?如果要儲存文件,那完全沒有必要放入到Redis中。本地緩存orRedis緩存分為本地緩存和分布式緩存:
1.本地緩存
比如Guava、Ehcache,甚至把緩存保存到Map中,這些都是本地緩存;
本地緩存的特點是輕量、實現簡單,生命周期隨著JVM的銷毀而結束;但是如果程序存在多個實例(程序部署多套),每個實例中的緩存不具有一致性。
2.分布式緩存
Redis被稱作分布式緩存,如果程序存在多個實例,各個實例可以共用Redis中的緩存數據,但同時因為引入了Redis,那么需要保證Redis的高可用,架構上更為復雜。
RedisorMemcachedMemcached也經常被用作緩存,也是分布式緩存的一種,那么它和Redis有什么區(qū)別呢?
Redis支持更豐富的數據類型,Memcache支持簡單的數據類型String;
Redis支持數據的持久化,可以將內存中的數據保存到硬盤中,重啟之后把數據加載到內存中,而Memcache只是把數據保存在內存中;
Redis目前支持集群模式,而Memcached沒有原生的集群模式,需要使用方自己實現;
Redis使用單線程的多路IO復用模型(Redis在最新的6.0版本中開始支持多線程);Memcached使用的是多非阻塞IO復用的網絡模型。
最后再強調一點,是否要引入Redis?使用本地緩存還是分布式緩存?都需從項目的實際情況出發(fā);Redis豐富的數據類型和對持久化的支持,會更加適合我們的項目。
我將持續(xù)分享Java開發(fā)、架構設計、程序員職業(yè)發(fā)展等方面的見解,希望能得到你的關注;關注我后,可私信發(fā)送數字【1】,獲取海量學習資料。好了,本文到此結束,如果可以幫助到大家,還望關注本站哦!
本文鏈接:http://xinin56.com/ruanjian/1997.html