Redis第一天學(xué)習(xí)
一、Redis作用:
1、從系統(tǒng)的層面說, CPU的速度遠(yuǎn)遠(yuǎn)高于磁盤IO的速度;所以要想提高響應(yīng)速度, 必須要減少磁盤IO的操作, 但是有很多信息又是存在數(shù)據(jù)庫當(dāng)中的, 而每次查詢數(shù)據(jù)庫就是一次IO操作
比如查詢用戶信息的例子,通常如下圖:

2、當(dāng)客戶端調(diào)用getUser接口的查詢用戶信息的時候,執(zhí)行順序1、2、3、4;由于用戶信息存放在DB中,所以2、3就有一次磁盤IO;當(dāng)成千上萬的用戶頻繁的調(diào)用這個接口的時候,這個看似簡單業(yè)務(wù)的接口會使整個系統(tǒng)變慢,降低整個系統(tǒng)的性能。

用戶訪問量大,會導(dǎo)致MySQL服務(wù)器放入內(nèi)存的數(shù)據(jù)過多,資源壓力過大
解決問題的辦法:

3、當(dāng)用客戶端調(diào)用getUser接口查詢用戶信息的時候,getUser接口直接去redis中查詢,如果redis中有該用戶信息,直接返回,從而避免了磁盤IO操作;如果redis中沒有該用戶信息,則從DB查詢,并且把該用戶信息存放到redis中,下一次查詢的時候緩存中就有了。
4、這樣在服務(wù)接口(getUser)和DB中間增加了一個緩存層,看似邏輯增加了,但當(dāng)面對高并發(fā)的時候,比如上邊提到的頻繁查詢用戶信息的情況,只有第一次查詢有磁盤IO操作,以后只要redis中存在就沒必要再查詢數(shù)據(jù)庫了。由于沒有了磁盤IO操作,并且redis所有數(shù)據(jù)都在內(nèi)存操作,所以性能會大大提升。
二、Redis?數(shù)據(jù)類型
Redis支持五種數(shù)據(jù)類型 (了解)
string(字符串)
hash(哈希)
list(列表)
set(集合)
zset(sorted set:有序集合)
三、Redis事務(wù)
Redis 事務(wù)可以一次執(zhí)行多個命令, 并且?guī)в幸韵聨讉€重要的保證:
事務(wù)是一個單獨的隔離操作:事務(wù)中的所有命令都會序列化、按順序地執(zhí)行。
事務(wù)在執(zhí)行的過程中,不會被其他客戶端發(fā)送來的命令請求所打斷。
事務(wù)是一個原子操作:事務(wù)中的命令要么全部被執(zhí)行,要么全部都不執(zhí)行。
一個事務(wù)從開始到執(zhí)行會經(jīng)歷以下三個階段:
開始事務(wù)。
命令入隊。
執(zhí)行事務(wù)。
以下是一個事務(wù)的例子, 它先以 MULTI 開始一個事務(wù), 然后將多個命令入隊到事務(wù)中, 最后由 EXEC 命令觸發(fā)事務(wù), 一并執(zhí)行事務(wù)中的所有命令:
四、Redis服務(wù)器
一. 密碼設(shè)置及驗證
Redis服務(wù)器默認(rèn)沒有密碼
設(shè)置密碼
臨時設(shè)置:

永久設(shè)置密碼:


五、Redis做MySQL緩存
實驗:使用redis做mysql數(shù)據(jù)庫緩存
實驗?zāi)康模和ㄟ^此實驗觀察redis用作數(shù)據(jù)庫緩存的效果,了解在工作中如何使用redis
此項目的效果:如果直接訪問數(shù)據(jù)庫將在終端中顯示,否則不會在終端顯示
實驗過程:
安裝redis(略)
安裝mysql(略)
配置java環(huán)境
1、配置項目配置文件
1)解壓
2)在mysql中創(chuàng)建shopping庫,將user.sql導(dǎo)入到shopping庫
3)創(chuàng)建項目用戶test并授權(quán)其對shopping庫擁有權(quán)限
4)修改配置文件(注意所有注釋的地方)


5. 啟動項目
進(jìn)入bin目錄,執(zhí)行 ./startup.sh
1、訪問測試:啟動成功后,開啟另外一個終端,進(jìn)行測試
curl過后,數(shù)據(jù)庫端的顯示內(nèi)容。
六、多實例
1、創(chuàng)建實例目錄
2、創(chuàng)建實例配置文件 - 修改各實例的配置 (端口,pid文件,log文件,數(shù)據(jù)目錄 ... )
3、利用實例配置文件啟動實例