Redis之(一)初識Redis
1、Redis概述
我們知道,記憶體是電腦主機板上的儲存部件,用於儲存當前正在使用的資料和程式,CPU可以與記憶體直接溝通,所以訪問速速非常高;而外存資料必須載入到記憶體以後程式才能使用。如果把CPU當做一個吃貨,那麼記憶體是碗,而外存是鍋,這個吃貨再能吃,也得先把飯從鍋裡盛到碗裡再下嘴,而不能直接跳到鍋裡大快朵頤。但是很多時候CPU吃的並不爽,一是因為碗不夠大,沒吃兩嘴就沒了;二是從鍋裡往碗裡盛飯是個比較耗時的過程,等待很痛苦。正經點說,就是記憶體大小、I/O速度、網路響應時間等常常成為應用系統的效能瓶頸。
傳統的關係型資料庫如MySQL、Oracle、DB2等,資料儲存在磁碟的檔案系統中,增刪改查需要頻繁地在記憶體與外存之間交換資料,很費時間。試想,如果有一種小巧而功能強大的儲存結構,用於在記憶體中管理資料量不太大但是訪問量特別大的熱點資料
,豈不妙哉?在以上背景下,Redis應運而生。
Redis是Remote Dictionary Server的簡稱,是一個由義大利人Salvatore Sanfilippo開發的key-value儲存系統,具有極高的讀寫效能,讀的速度可達110000次/s,寫的速度可達81000次/s 。
與Redis類似的產品還有memcache,同樣是一個基於記憶體的key-value儲存系統,但是由於memcache資料結構單一,資料安全性低下等原因,大有被Redis取而代之的趨勢。
Redis 與其他 key - value 快取產品相比,有以下特點:
1、Redis支援資料的持久化,週期性的把更新的資料寫入磁碟或者把修改操作寫入追加的記錄檔案,重啟的時候可以再次載入進行使用。
2、Redis不僅僅支援簡單的key-value型別的資料,同時還提供list,set,zset,hash等資料結構的儲存。
3、Redis支援資料的備份,即master-slave模式的資料備份。
4、Redis的所有操作都是原子性的,同時Redis還支援對幾個操作合併後的原子性執行。
5、Redis還支援 publish/subscribe, 通知, key過期等高階特性。
網際網路發展到現在,僅靠傳統的關係型資料庫已經遠不能應對各種變態的需求,一個大型的網際網路應用往往需要各類資料庫相互合作,才能達到高可用、高效能的標準。
比如,使用MySQL/Oracle/DB2管理核心資料,使用Memcache/Redis管理熱點資料,使用Hbase/Hadoop管理海量資料……總之,在合適的地方選擇合適的資料庫。
2、Redis管理工具
Redis安裝好之後,進入安裝目錄的src資料夾,會發現裡面有6個可執行檔案:
它們對應著6個管理Redis的工具:
2.1 redis-server
該工具用於啟動Redis伺服器,處理與客戶端的對話,一個伺服器可以與多個客戶端連線。
在終端輸入該命令,如果啟動成功,就會看到Redis那幅標誌性的圖片:
Redis提示說:
Warning: no config file specified, using the defaultconfig. In order to specify a config file use Redis-server /path/to/Redis.conf
沒有指定配置檔案,當前使用的是預設配置。假如想使用位於路徑“/winner/setting/”下的Redis.conf作為配置檔案,使用命令“Redis-server/winner/setting/Redis.conf”即可。
最後一行,Redis提示伺服器已經準備好在埠6379接受客戶端的連線,6379是Redis的預設埠。
至於為什麼使用6379當做預設埠還有段傳聞。寫Redis的大神Antirez是義大利人,在義大利有個歌女名為Alessia Merz,長期以來被Antirez及其朋友當作愚蠢的代名詞,MERZ對應的手機按鍵就是6379,後來Antirez開發Redis時就使用這四個數字來當做預設埠。
2.2 redis-cli
該工具用於啟動Redis客戶端,發起與伺服器的對話。可以使用引數來指定目標伺服器的詳細資訊,例如使用引數“-h”指定伺服器IP地址、“-p”指定伺服器埠、“-a”指定登入密碼等,如:
Redis-cli –h 192.168.1.2 –p 6300
如不指定任何引數,則預設連線127.0.0.1的6379埠。
與Redis伺服器取得連線後,就通過指令進行資料的存取、更改等操作了:
2.3 redis-benchmark
該工具用於測試Redis在本機的效能,類似於魯大師的跑分程式。執行之後會得到一組資料存取效率的報告:
2.4 redis-check-aof
Redis雖然是基於記憶體的資料庫,但是會建立並更新在硬碟上的備份,備份有兩種方式,一個是把記憶體的資料匯入dump.rdb檔案中,另一中就是將每個執行過的命令記錄到AOF檔案中。
該工具用於檢查、修復AOF檔案。
2.5 redis-check-dump
與Redis-check-aof類似,該工具用於檢查dump.rdb檔案。
2.6 redis-sentinel
該工具提供Redis例項的監控管理、通知和例項失效備援服務,是Redis叢集的管理工具,監控各個其他節點的工作情況並且進行故障恢復,來提高叢集的高可用性。