1. 程式人生 > >二、高併發神器 非關係型資料庫NoSql之Redis介紹以及Linux環境下的安裝

二、高併發神器 非關係型資料庫NoSql之Redis介紹以及Linux環境下的安裝

關係型資料庫支援原子性、一致性、隔離性、永續性四大特性,非關係資料庫不支援這四大特性

非關係資料庫相對於關係型資料庫的優勢:

關係型資料庫為了降低資料冗餘,保證資料約束性,在資料查詢時不得不使用多個數據表之間的連線操作,但是這極大的降低了查詢效率,不能滿足當下網路應用的高併發要求,而與此同時非關係型資料庫在對併發的大規模訪問有著非常高的效率優勢,因此非關係資料庫在高併發的具體應用場景下得到了非常迅猛的發展。Key-value儲存是Redis的主要特點之一。現如今我們說的非關係型資料庫通常指的是非關係型分散式資料庫

非關係型資料庫NoSQL和關係型資料庫的對比
資料庫型別 關係型資料庫 非關係資料庫
優勢

1、擅長小資料量的處理

2、擅長複雜的SQL操作,可以關聯多張表,可以進行Join等複雜的查詢

3、可以方便的生成各種資料物件,利用儲存的資料建立窗體和報表,視覺化較好

1、擅長大量資料的寫入和讀取,尤其是在做高併發業務的時候

2、快速的查詢響應(因為它存放於記憶體的磁碟的,所以速度是非常非常快的),靈活的資料型別

3、資料結構變更或更新非常方便,不需要更改已有資料的資料結構

4、擊碎了效能瓶頸,可以使執行速度變得更快(Redis在進行50萬併發量的情況下,它的讀取速度是11萬次每秒,寫入操作是8.1萬次每秒)

劣勢

1、在進行寫操作、尤其是高併發業務的時候速度非常非常慢

2、為有資料更新的表做所以和結構變更

3、欄位不固定的應用,如果要增加一個欄位,首先要做的是修改表結構,然後再去操作資料

4、對簡單的資料去進行查詢效率也是非常低的,例如資料庫裡面存放了20億條資料,只是想查詢一個欄位的資料,這20億條資料可能要操作十多分鐘

1、不提供複雜的API介面

2、一般僅提供key的索引

3、不適合小資料的處理

Redis是一個key-value儲存系統,支援網路、可基於記憶體亦可持久化的日誌型、並提供多種語言的API

和Memcached類似,它支援儲存的value型別相對更多,包括string(字串)、list(連結串列)、set(集合)、zset(sorted set --有序集合)和hash(雜湊型別)。與memcached一樣,為了保證效率,資料都是快取在記憶體中。區別的是redis會週期性的把更新的資料寫入磁碟或者把修改操作寫入追加的記錄檔案,並且在此基礎上實現了master-slave(主從)同步

Linux環境下(CentOS Linux release 7.3.1611 (Core))安裝Redis

進入官網:https://redis.io/

1、檢視系統版本

cat /etc/redhat-release

2、進入到opt目錄下、建立redis資料夾

cd /opt/
mkdir redis

3、進入/opt/redis/目錄下,下載redis

wget http://download.redis.io/releases/redis-4.0.6.tar.gz

4、解壓redis-4.0.6.tar.gz

tar -zvxf redis-4.0.6.tar.gz

如果沒有wget命令,請cd /切換到上級目錄,輸入yum install wgert -y安裝

5、在安裝Redis的過程中是依賴於gcctcl命令的,gcc是預編譯,tcl是編輯的命令列,

cd /
檢視安裝gcc資訊:
gcc -v
安裝命令:
yum install gcc tcl -y

6、切換到Redis目錄下面、檢視檔案並執行make命令安裝Redis

cd opt/redis/redis-4.0.6
檢視解壓之後的檔案
ll
安裝:在目錄下輸入
make

在Linux下啟動Redis有三種方式:

第一種方式:安裝完成之後就自動啟動了;

第二種方式:啟動配置檔案,以檔案形式配置啟動;

第三者方式:以服務的方式進行啟動(最常用);

這個服務就很好理解的,就類似windows下的計算機管理裡面的服務,我們的關係型資料庫MySQL和Oracle都可以在這裡進行啟動。

下面我們提一下在Linux系統下如何去配置這些服務。

切換到根目錄
cd /
切換到
cd usr/
檢視該目錄下檔案
ll
新建一個目錄,不可與目錄中已存在的重名
mkdir lksoft
進入
cd lksoft
建立目錄
mkdir redis
進入該目錄
cd redis/

8、重新設定環境變數  PREFIX

切換剛剛解壓的檔案目錄
cd /opt/redis/redis-4.0.6
執行
make PREFIX=/usr/lksoft/redis/ install

9、檢視當前Redis在系統中使用的埠號是否已經被佔用

在任意目錄執行
ss -tanl

10、將環境變數設定成服務(配置環境變數)

切換至 
cd src/
查詢檔案列表
ll

這裡有個重要檔案 redis-sentinel,這是它的服務的核心檔案

將這個檔案複製到剛才新建的資料夾裡面

cp redis-sentinel /usr/lksoft/redis/bin
是否覆蓋?選擇 y

這樣就將我們的服務複製到usr下面了。usr下面一般都是環境變數和服務名稱

切換回剛剛建立的目錄
cd /usr/lksoft/redis/bin
查詢檔案列表
ll

我們看到已經將這些服務都配置過來了。

我們希望在根目錄下啟動,這時候我們就需要將這個服務名稱作為一個全域性的服務名稱

回到根目錄
cd /
修改配置檔案,將這個服務名稱作為一個全域性的服務名稱

vi ~/.bash_profile

這是Linux下環境變數的配置檔案

~ 表示系統分割槽

/ 表示磁碟分割槽

配置環境變數成

按下esc鍵,輸入:wq!退出

到目前為止環境變數已經配置完成了,

輸入source ~/.bash_profile使檔案生效

source ~/.bash_profile

啟動

切換到之前的redis目錄,這裡都是redis的工具,我們可以設定redis的埠號和日誌檔案資訊等
cd /opt/redis/redis-4.0.6/utils
啟動 初始化
./install_server.sh
Please select the redis port for this instance[6379]:(即是否啟用redis的預設埠號6379):直接回車
Please select the redis config file name [/etc/redis/6379.conf] (即是否啟用預設配置檔案):直接回車
Please select the redis log file name [/var/log/redis_6379.log](即是否啟動redis的預設日誌檔名):直接回車
Please select the data directory for this instance [/var/lib/redis/6379](即是否載入redis所有的依賴包路徑):直接回車
Please select the redis executable path [/usr/lksoft/redis/bin/redis-server] (是否預設使用此redis的預設服務路徑[/usr/lksoft/redis/bin/redis-server]): 直接回車

然後顯示的是設定的檔案資訊,是否確認? 直接回車 

此處最好截圖,記住這些相關資訊

至此初始化成功,並且服務已經啟動!