本文将從Redis簡介、Redis特性回顧、Redis安裝、Redis典型應用場景四部分進行介紹Redis,讀完本文,你将會對Redis的特性和功能有初步的了解。
Redis是一個開源的(BSD許可)、速度非常快的非關系資料庫(non-relational database),它可以存儲鍵(key)與5中不同資料類型的值(value)之間的映射(mapping)。了解Redis資料結構可以參考Redis資料結構和常用API。
誰在使用Redis?
GitHub、Twitter、Stack Overflow
阿裡巴巴、百度、微網誌…
Redis能讀的速度是110000次/s,寫的速度是81000次/s 。
思考:Redis速度為什麼這麼快?
其實,Redis的資料存儲于記憶體中。有計算機方面基礎知識的知道,從寄存器到硬碟,速度越來越慢,空間越來越大,價格越來越便宜,正如下面這張圖所示:

下面這張表更直覺:
<col>
類型
每秒讀寫次數
随機讀寫延遲
通路帶寬
記憶體
千萬級
80ns
5GB
SSD盤
35000
0.1-0.2ms
100-300MB
機械盤
100左右
10ms
100MB左右
因為Redis資料存儲于記憶體中,是以速度性能優于存儲于硬碟的MySQL資料庫。
Redis所有資料保持在記憶體中,對資料的更新将異步儲存到磁盤上。
Redis擁有兩種不同形式的持久化方法,他們都可以用小而緊湊的格式将存儲在記憶體中的資料寫入硬碟:第一種持久化方法為時間點轉儲(point-in-time dump),轉儲操作既可以在“指定時間段内有指定數量的寫操作執行”這一條件被滿足時執行,又可以通過調用兩條轉儲到硬碟指令中的任何一條來執行;第二種持久化方法将所有修改了的資料庫的指令都寫入一個隻追加檔案裡面,使用者可以根據資料的重要程度,将隻追加寫入設定為從不同步、每秒同步一次或者每寫入一個指令就同步一次。
Redis支援 Strings, Lists, Hashes, Sets 及 Ordered Sets 資料類型操作。
另外還有BitMap:位圖;HyperLogLog:超小記憶體唯一值計數;GEO:地理資訊位置。
Redis支援Java、PHP、Python、Ruby、Lua、Node Js等程式設計語言。
Redis支援釋出訂閱、Lua腳本、事務、pipeline(流水線)等功能。
Redis不依賴外部資料庫;
Redis的所有操作都是原子性的,意思就是要麼成功執行要麼失敗完全不執行。
執行複制的從伺服器會連接配接上主伺服器,接收主伺服器發送的整個資料庫的初始副本;之後主伺服器執行的寫指令,都會被發送給所有連接配接着的從伺服器去執行,進而實作實時更新從伺服器的資料集。因為從伺服器包含的資料會不斷地進行更新,是以用戶端可以向任意一個從伺服器發送讀請求,以此來避免對主伺服器進行集中式的通路。
Redis-Sentinel(v2.8)支援高可用
Redis-Cluster(v3.0)支援分布式
下載下傳壓縮包:
解壓檔案:
進入解壓目錄:
編譯安裝:
注意:請確定機器已經安裝過gcc和gcc-c++,不然會有報錯:
運作Redis伺服器:
下載下傳位址:https://github.com/MSOpenTech/redis/releases。
下載下傳 Redis-x64-xxx.zip壓縮包到 C 盤,解壓後,将檔案夾重新命名為 redis。
輕按兩下redis-server.exe即可啟動:
如果想友善的話,可以把 redis 的路徑加到系統的環境變量裡,可以直接通過redis-server啟動。
redis-server:Redis伺服器
redis-cli:Redis指令行用戶端
redis-benchmark:Redis性能測試工具
redis-check-aof:AOF檔案修複工具
redis-check-dump:RDB檔案檢查工具
redis-sentinel:Sentinel伺服器
直接啟動:上面Centos 7的啟動方式是直接啟動
背景啟動:
1.修改redis.conf檔案:修改daemonize為yes,即預設以背景程式方式運作。
常用配置:
2.然後使用redis.conf啟動
如何選擇?
生産環境選擇配置啟動
單機多執行個體配置檔案可以用端口區分開
作為NoSQL資料庫,Redis不适合交易場景,主要用來做資料分析、報表、資料挖掘、推薦、日志處理等非核心交易場景,如:
緩存系統
計數器:轉發數、點贊數、播放數等
消息隊列系統
排行榜
社交網絡
實時系統
由于部落客也是在攀登的路上,文中可能存在不當之處,歡迎各位多指教! 如果文章對您有用,那麼請點個”推薦“,以資鼓勵!