欧美经典成人在观看线视频_嫩草成人影院_国产在线精品一区二区中文_国产欧美日韩综合二区三区

當(dāng)前位置:首頁 > 軟件開發(fā) > 正文

memcached是什么 memcached最新版本

memcached是什么 memcached最新版本

大家好,今天來為大家解答memcached是什么這個問題的一些問題點(diǎn),包括memcached最新版本也一樣很多人還不知道,因此呢,今天就來為大家分析分析,現(xiàn)在讓我們一起...

大家好,今天來為大家解答memcached是什么這個問題的一些問題點(diǎn),包括memcached最新版本也一樣很多人還不知道,因此呢,今天就來為大家分析分析,現(xiàn)在讓我們一起來看看吧!如果解決了您的問題,還望您關(guān)注下本站哦,謝謝~

Redis和Memcached各有什么優(yōu)缺點(diǎn)主要的應(yīng)用場景是什么

根據(jù)我的經(jīng)驗(yàn),在BAT里,redis已經(jīng)逐漸取代了memcached,成為分布式場景廣泛使用的緩存方案。接下來,我們就分析下,redis是如何取代memcached,成為開發(fā)者的寵兒的。

支持的存儲類型不同

雖然都是內(nèi)存數(shù)據(jù)庫,memcached不僅能夠存儲string,還能夠存儲圖片,視頻等形式的文件。然而對于更多的使用內(nèi)存數(shù)據(jù)庫做緩存以及分布式方案的程序開發(fā)者來說,memcached提供的string格式存儲,應(yīng)用場景有限,而存儲圖片視頻的功能又十分雞肋(主要是沒這方面需求)。相比之下,redis提供set,hash,list等多種類型的存儲結(jié)構(gòu),對于做分布式緩存實(shí)在是再適合不過了。

數(shù)據(jù)落盤

雖然大多數(shù)人使用緩存以及分布式方案都不會要求數(shù)據(jù)持久化,但是誰也不能保證不出現(xiàn)萬一的情況。一旦發(fā)生穩(wěn)定性問題,memcached掛掉后,數(shù)據(jù)是不可恢復(fù)的,而redis除了支持在配置里打開數(shù)據(jù)落盤(RDB),還能通過aof來找回數(shù)據(jù)。

內(nèi)存空間與數(shù)據(jù)量

memcached可以修改最大內(nèi)存,使用的是LRU算法,而redis目前底層使用了自己的VM,引入了新的特性突破了物理內(nèi)存的限制。個人認(rèn)為在這方面依然是redis更加優(yōu)秀一些。

使用場景

基于以上提到的特點(diǎn),基本我們就能分清redis與memcached的場景了。

如果對緩存數(shù)據(jù)類型超越了基本的數(shù)據(jù)結(jié)構(gòu),需要圖片或者視頻,多讀少寫,且數(shù)據(jù)量非常大的場景,那么一定要用memcached而不是redis了(比如微博大量查詢好友信息,微博信息等,但是不是說微博用的是memcached方案哦)。

但是如果是對緩存的數(shù)據(jù)格式有更多的要求,且對安全性也有很高的要求的話,建議還是使用redis,這也是redis目前正在逐漸代替memcached的根本原因。

以上是我的淺見,歡迎各位在下方評論區(qū)與我溝通。

我是蘇蘇思量,來自BAT的Java開發(fā)工程師,每天分享科技類見聞,歡迎關(guān)注我,與我共同進(jìn)步。

Guava、Memcached和Redis,選哪個比較好

簡單來說,Redis就是一個數(shù)據(jù)庫。

不同于傳統(tǒng)數(shù)據(jù)庫將數(shù)據(jù)保存在磁盤中,Redis將數(shù)據(jù)存在內(nèi)存中,所以它也經(jīng)常被叫做內(nèi)存數(shù)據(jù)庫;同時Redis存儲也被叫做NoSQL數(shù)據(jù)庫、非關(guān)系型數(shù)據(jù)庫。

因?yàn)镽edis將數(shù)據(jù)保存在內(nèi)存中,所以讀寫速度會非???,因此Redis被廣泛應(yīng)用做緩存或其他需要高速讀寫的場景。

為什么要使用Redis

軟件架構(gòu)中引入Redis,是因?yàn)樗坝挚煊謴?qiáng)”。

1.快,是指性能高

計算機(jī)硬件的速度由低到高:硬盤-網(wǎng)絡(luò)-內(nèi)存-CPU;

在傳統(tǒng)的數(shù)據(jù)庫中,如果第一次訪問數(shù)據(jù)庫中的某條數(shù)據(jù),通常是比較慢的,因?yàn)閿?shù)據(jù)庫需要從硬盤上讀取數(shù)據(jù);而Redis中的數(shù)據(jù)保存在了內(nèi)存中,所以速度會比從磁盤中讀取數(shù)據(jù)快得多。

所以我們經(jīng)常把Redis當(dāng)做緩存:第一次從數(shù)據(jù)庫中讀取數(shù)據(jù),并放入Redis,后面直接訪問Redis就可以了。

2.強(qiáng),是指高并發(fā)場景下的穩(wěn)定性(高可用)

在高并發(fā)的場景下,Redis能夠承受的訪問極限,是遠(yuǎn)遠(yuǎn)大于數(shù)據(jù)庫的,所以我們可以考慮把需要高并發(fā)讀的數(shù)據(jù)放到Redis中;

比如秒殺功能,短短幾秒內(nèi)可能就會有數(shù)十萬筆的訪問,如果直接操作數(shù)據(jù)庫的話,數(shù)據(jù)庫可能瞬間就被擊垮了。

哪些場景不適合放入Redis

當(dāng)然,也不是說所有的場景、所有的數(shù)據(jù)都適合放進(jìn)Redis中,通常我們需要考慮以下幾點(diǎn):

數(shù)據(jù)查詢的命中率高么?如果緩存的命中率很低,沒有必要放入到Redis中;數(shù)據(jù)讀寫操作多么?如果數(shù)據(jù)會被頻繁寫入(增、改、刪),設(shè)置寫操作次數(shù)大于讀操作次數(shù),那么也沒有必要使用Redis;業(yè)務(wù)數(shù)據(jù)大小如何?如果要儲存文件,那完全沒有必要放入到Redis中。本地緩存orRedis

緩存分為本地緩存和分布式緩存:

1.本地緩存

比如Guava、Ehcache,甚至把緩存保存到Map中,這些都是本地緩存;

本地緩存的特點(diǎn)是輕量、實(shí)現(xiàn)簡單,生命周期隨著JVM的銷毀而結(jié)束;但是如果程序存在多個實(shí)例(程序部署多套),每個實(shí)例中的緩存不具有一致性。

2.分布式緩存

Redis被稱作分布式緩存,如果程序存在多個實(shí)例,各個實(shí)例可以共用Redis中的緩存數(shù)據(jù),但同時因?yàn)橐肓薘edis,那么需要保證Redis的高可用,架構(gòu)上更為復(fù)雜。

RedisorMemcached

Memcached也經(jīng)常被用作緩存,也是分布式緩存的一種,那么它和Redis有什么區(qū)別呢?

Redis支持更豐富的數(shù)據(jù)類型,Memcache支持簡單的數(shù)據(jù)類型String;

Redis支持?jǐn)?shù)據(jù)的持久化,可以將內(nèi)存中的數(shù)據(jù)保存到硬盤中,重啟之后把數(shù)據(jù)加載到內(nèi)存中,而Memcache只是把數(shù)據(jù)保存在內(nèi)存中;

Redis目前支持集群模式,而Memcached沒有原生的集群模式,需要使用方自己實(shí)現(xiàn);

Redis使用單線程的多路IO復(fù)用模型(Redis在最新的6.0版本中開始支持多線程);Memcached使用的是多非阻塞IO復(fù)用的網(wǎng)絡(luò)模型。

最后再強(qiáng)調(diào)一點(diǎn),是否要引入Redis?使用本地緩存還是分布式緩存?都需從項(xiàng)目的實(shí)際情況出發(fā);Redis豐富的數(shù)據(jù)類型和對持久化的支持,會更加適合我們的項(xiàng)目。

我將持續(xù)分享Java開發(fā)、架構(gòu)設(shè)計、程序員職業(yè)發(fā)展等方面的見解,希望能得到你的關(guān)注;關(guān)注我后,可私信發(fā)送數(shù)字【1】,獲取海量學(xué)習(xí)資料。

好了,本文到此結(jié)束,如果可以幫助到大家,還望關(guān)注本站哦!