標籤:

redis相對於mysql有什麼劣勢,是不是能用redis盡量用?

redis相對於mysql有哪些瓶頸


Redis相對於MySQL的缺點:

1、本質上Redis是一個基於內存的cache,在數據落地,持久化方面肯定不如MySQL可靠。最最蛋疼的是Redis達到最大內存限制了,導致所有寫命令失敗。所以一定要做好持久化和容量預估;

2、Redis的集群方案一直是比較雞肋,直到3.0官方版本才支持,在此之前大都用Twemproxy redis或某莢的Codis;而MySQL在集群方面有完整的解決方案。當然這也與Redis還比較年輕有關係;

3、Redis基於內存,目前來說內存還是比較昂貴的;

是不是盡量用Redis?

當然,不是!!!所有的技術、工具都有其擅長的地方,合理使用方能發揮它100%的作用。

Redis最擅長的是結構化數據的cache,計數器場景,輕量級的消息隊列,Top排行榜等互聯網應用場景。這方面,建議樓主找找微博技術團隊的分享,他們應該是國內Redis最大的應用團隊。


本身應用場景不同,自然無法直接對比優勢劣勢。

從效率來說:

Redis的數據存放在內存,所以速度快但是會受到內存空間限制。MySQL存放在硬碟,在速度上肯定沒有Redis快,但是存放的數據量要多的多。

從功能來說:

Redis是一個K-V資料庫,同時還支持List/Hash/Set/Sorted Set等幾個簡單數據結構,所以只能以這些數據結構為基礎實現功能。而MySQL這點就不必說了。

最後需要提到的是,我一開始使用Redis時也覺得它的功能非常強大,以致於各種需求都下意識的去尋找Redis的解決方案(詳見:Redis應用場景)。不過也有幾個需要注意的點:

1. Redis雖然默認提供了RDB和AOF兩種數據持久化方式,不過很多前輩還是建議我不要太信任Redis的持久化功能,所以重要數據最好還是存放在MySQL,然後在Redis中做緩存。

2. 項目初期在訪問量低的時候通過Redis實現了很多功能,當用戶量大了以後很快發現內存不夠用了就會很尷尬。合理的利用有限的內存,將讀(寫)頻繁的熱數據放在Redis中才能更好感受到它帶來的性能提升。


性能好,快,並發高,但不能處理邏輯,而且不支持事務,看具體的場合,主要做數據緩存,減少mysql資料庫的壓力。


應用場景不同 區別很大


只支持key-value,持久化沒有mysql安全,沒有事物,不同場景用不同的資料庫,看你看重什麼了


推薦閱讀:

請教各位大拿:Tachyon和Redis有什麼區別?
Redis 哈希槽的概念,到底是什麼?是一個表的表名就會佔用一個哈希槽?
問下 有序數組 ,有什麼好的數據結構可以替代?

TAG:Redis |