1.什么是Redis
- 一款內存高速緩存數據庫(全稱遠程數據服務);
- 使用C語言編寫
- Redis是一個key-value存儲系統,它支持豐富的數據類型,如:string、list、set、zset(sortedset)、hash等
2.Redis特點
- Redis以內存作為數據存儲介質,所以讀寫數據的效率極高,遠遠超過數據庫。以設置和獲取一個256字節字符串為例,它的讀取速度可高達110000次/s,寫速度高達81000次/s。
- 儲存在Redis中的數據是持久化的,斷電或重啟后,數據也不會丟失。-----Redis的存儲分為內存存儲、磁盤存儲和log文件三部分,重啟后,Redis可以從磁盤重新將數據加載到內存中。(實現持久化)
3.Redis應用場景,它能做什么在服務器中常用來存儲一些需要頻繁調取的數據,這樣可以大大節省系統直接讀取磁盤來獲得數據的I/O開銷,更重要的是可以極大提升速度。(拿大型網站來舉個例子,比如a網站首頁一天有100萬人訪問,其中有一個板塊為推薦新聞。要是直接從數據庫查詢,那么一天就要多消耗100萬次數據庫請求。上面已經說過,Redis支持豐富的數據類型,所以這完全可以用Redis來完成,將這種熱點數據存到Redis(內存)中,要用的時候,直接從內存取,極大的提高了速度和節約了服務器的開銷。)
(1)速度快,因為數據存在內存中,類似于HashMap,HashMap的優勢就是查找和操作的時間復雜度都是O(1)(2)支持豐富數據類型,支持string,list,set,sortedset,hash(3)支持事務,操作都是原子性,所謂的原子性就是對數據的更改要么全部執行,要么全部不執行(4)豐富的特性:可用于緩存,消息,按key設置過期時間,過期后將會自動刪除
(1)memcached所有的值均是簡單的字符串,redis作為其替代者,支持更為豐富的數據類型(2)redis的速度比memcached快很多(3)redis可以持久化其數據
(1)Master最好不要做任何持久化工作,如RDB內存快照和AOF日志文件(2)如果數據比較重要,某個Slave開啟AOF備份數據,策略設置為每秒同步一次(3)為了主從復制的速度和連接的穩定性,Master和Slave最好在同一個局域網內(4)盡量避免在壓力很大的主庫上增加從庫(5)主從復制不要用圖狀結構,用單向鏈表結構更為穩定4.redis和mysql的區別總結(1)類型上從類型上來說,mysql是關系型數據庫,redis是緩存數據庫(2)作用上mysql用于持久化的存儲數據到硬盤,功能強大,但是速度較慢redis用于存儲使用較為頻繁的數據到緩存中,讀取速度快(3)需求上mysql和redis因為需求的不同,一般都是配合使用。5.redis和mysql要根據具體業務場景去選型
- redis和mysql要根據具體業務場景去選型
- mysql:數據放在磁盤redis:數據放在內存
- mysql支持sql查詢,可以實現一些關聯的查詢以及統計;
- redis對內存要求比較高,在有限的條件下不能把所有數據都放在redis;
- mysql偏向于存數據,redis偏向于快速取數據,但redis查詢復雜的表關系時不如mysql,所以可以把熱門的數據放redis,mysql存基本數據