Redis介紹及環境搭建

Redis

一、Redis介紹

1.1 NoSQL數據庫

    NoSQL,泛指非關係型的數據庫,NoSQL即Not-Only SQL,它可以作爲關係型數據庫的良好補充。隨着互聯網web2.0網站的興起,非關係型的數據庫現在成了一個極其熱門的新領域,非關係數據庫產品的發展非常迅速。而傳統的關係數據庫在應付web2.0網站,特別是超大規模和高併發的SNS類型的web2.0純動態網站已經顯得力不從心,暴露了很多難以克服的問題,例如: 
1、High performance - 對數據庫高併發讀寫的需求 
web2.0網站要根據用戶個性化信息來實時生成動態頁面和提供動態信息,所以基本上無法使用動態頁面靜態化技術,因此數據庫併發負載非常高,往往要達到每秒上萬次讀寫請求。關係數據庫應付上萬次SQL查詢還勉強頂得住,但是應付上萬次SQL寫數據請求,硬盤IO就已經無法承受了。其實對於普通的BBS網站,往往也存在對高併發寫請求的需求,例如網站的實時統計在線用戶狀態,記錄熱門帖子的點擊次數,投票計數等,因此這是一個相當普遍的需求。
2、Huge Storage - 對海量數據的高效率存儲和訪問的需求 
類似Facebook,twitter,Friendfeed這樣的SNS網站,每天用戶產生海量的用戶動態,以Friendfeed爲例,一個月就達到了2.5億條用戶動態,對於關係數據庫來說,在一張2.5億條記錄的表裏面進行SQL查詢,效率是極其低下乃至不可忍受的。再例如大型web網站的用戶登錄系統,例如騰訊,盛大,動輒數以億計的帳號,關係數據庫也很難應付。 
3、High Scalability && High Availability- 對數據庫的高可擴展性和高可用性的需求 
在基於web的架構當中,數據庫是最難進行橫向擴展的,當一個應用系統的用戶量和訪問量與日俱增的時候,你的數據庫卻沒有辦法像web server和app server那樣簡單的通過添加更多的硬件和服務節點來擴展性能和負載能力。對於很多需要提供24小時不間斷服務的網站來說,對數據庫系統進行升級和擴展是非常痛苦的事情,往往需要停機維護和數據遷移,爲什麼數據庫不能通過不斷的添加服務器節點來實現擴展呢? 
    NoSQL數據庫的產生就是爲了解決大規模數據集合多重數據種類帶來的挑戰,尤其是大數據應用難題。

1.2 NoSQL數據庫分類

1、鍵值(Key-Value)存儲數據庫
相關產品: Tokyo Cabinet/Tyrant、Redis、Voldemort、Berkeley DB
典型應用: 內容緩存,主要用於處理大量數據的高訪問負載。 
數據模型: 一系列鍵值對
優勢: 快速查詢
劣勢: 存儲的數據缺少結構化

2、列存儲數據庫
相關產品:Cassandra, HBase, Riak
典型應用:分佈式的文件系統
數據模型:以列簇式存儲,將同一列數據存在一起
優勢:查找速度快,可擴展性強,更容易進行分佈式擴展
劣勢:功能相對侷限

3、文檔型數據庫
相關產品:CouchDB、MongoDB
典型應用:Web應用(與Key-Value類似,Value是結構化的)
數據模型: 一系列鍵值對
 優勢:數據結構要求不嚴格
 劣勢: 查詢性能不高,而且缺乏統一的查詢語法
4、圖形(Graph)數據庫
相關數據庫:Neo4J、InfoGrid、Infinite Graph
典型應用:社交網絡
數據模型:圖結構
優勢:利用圖結構相關算法。
劣勢:需要對整個圖做計算才能得出結果,不容易做分佈式的集羣方案。

1.3 Redis

Redis是用C語言開發的一個開源的高性能鍵值對(key-value)數據庫。它通過提供多種鍵值數據類型來適應不同場景下的存儲需求,目前爲止Redis支持的鍵值數據類型如
下:
字符串類型  String
散列類型 Hash
列表類型 List
集合類型 Set
有序集合類型 SortedSet

redis的應用場景: 
緩存(數據查詢、短連接、新聞內容、商品內容等等)。(最多使用)
分佈式集羣架構中的session分離。
聊天室的在線好友列表。
任務隊列。(秒殺、搶購、12306等等)
應用排行榜。
網站訪問統計。
數據過期處理(可以精確到毫秒)

二、Redis 搭建

redis需要安裝在linux服務器上運行測試,本教程使用 linux虛擬機及ssh客戶端進行功能測試。

2.1 虛擬機

創建Centos6.5虛擬機作爲linux服務器。
虛擬機ip:192.168.200.168

2.2 ssh客戶端

在開發環境(windows)安裝ssh客戶端,本教程使用SecureCRT作爲ssh客戶端連接虛擬機。

2.3 redis的安裝環境

redis是C語言開發,建議在linux上運行,本教程使用Centos6.5作爲安裝環境。
安裝redis需要先將官網下載的源碼進行編譯,編譯依賴gcc環境,如果沒有gcc環境,需要安裝gcc:yum install gcc-c++

2.4 redis的安裝

2.4.1源碼下載

從官網下載
http://download.redis.io/releases/redis-3.0.0.tar.gz
將redis-3.0.0.tar.gz拷貝到虛擬機Linux /usr/local目錄下

2.4.2 安裝步驟

1、解壓源碼

tar -zxvf redis-3.0.0.tar.gz  

2、編譯源碼

進入解壓後的目錄
cd /usr/local/redis-3.0.0
編譯 make

3、安裝到指定目錄

本次安裝到 /usr/local/redis目錄
cd /usr/local/redis-3.0.0 
make PREFIX=/usr/local/redis install

4、拷貝配置文件redis.conf到安裝目錄

redis.conf是redis的配置文件,redis.conf在redis源碼目錄。
注意修改port作爲redis進程的端口,port默認6379。
在源碼的根目錄下有redis.conf配置文件,將其拷貝到安裝目錄中的conf
cp /usr/local/redis-3.0.0/redis.conf  /usr/local/redis/bin

2.5 redis的啓動

2.5.1 前端啓動

直接運行bin/redis-server將以前端模式啓動,前端模式啓動的缺點是ssh命令窗口關閉則redis-server程序結束,不推薦使用此方法。

2.5.2 後端啓動

修改redis.conf配置文件, daemonize yes 以後端模式啓動。
執行如下命令啓動redis:
cd /usr/local/redis
./bin/redis-server ./bin/redis.conf

2.5.3 啓動多個進程
方法1:
啓動時指定端口可在一臺服務器啓動多個redis進程。
cd /usr/local/redis/bin
./redis-server ./redis.conf --port 6380
方法2:
創建多個redis目錄,以端口號命名,比如:創建6379、6380兩個目錄,將redis的安裝文件bin和conf拷貝至這兩個目錄。
修改6379目錄下的redis.conf設置端口號爲6379
修改6380目錄下的redis.conf設置端口號爲6380
啓動6379和6380目錄下的redis-server程序:
cd 6379
./redis-server . /redis.conf
cd 6380
./redis-server . /redis.conf

2.5 redis停止

強行終止Redis進程可能會導致redis持久化數據丟失。正確停止Redis的方式應該是向Redis發送SHUTDOWN命令,方法爲:

cd /usr/local/redis
./bin/redis-cli shutdown

2.6 redis 客戶端

在redis的安裝目錄中有redis的客戶端,即redis-cli(Redis Command Line Interface),它是Redis自帶的基於命令行的Redis客戶端。

2.6.1 連接redis 服務端

執行bin/redis-cli連接redis服務端:
./redis-cli
redis-cli默認連接本機的redis,本機的redis沒有啓動則錯誤。
指定連接redis服務的ip和端口:
./redis-cli -h 192.168.200.128 -p 6379

2.6.2 測試redis

1、ping指令
用於測試客戶端與服務端之間的連接是否正常,如果正常會回覆pong
2、set/get
使用set和get可以像redis設置數據和獲取數據
set name zhangsan
get name 會返回”zhangsan”

設置密碼的步驟如下:
vi redis.conf #此文件默認在根目錄下。

Redis設置密碼

vim redis.conf文件。找到requirepass foobared去掉註釋,foobared改爲自己的密碼,我在這裏改爲
requirepass 123456
切換到 bin目錄下。
重啓服務 ./redis-server /home/logs/redis-2.8.4/redis.conf
測試連接:./redis-cli -h 115.28.240.103 -p 6379
輸入命令 會提示(error) NOAUTH Authentication required. 這是屬於正常現象。
我們輸入 auth 123456#你剛纔設置的密碼

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章