百度首頁(yè)網(wǎng)站的設(shè)計(jì)詞語(yǔ)搜索排行
一、概念
關(guān)系型數(shù)據(jù)庫(kù)是典型的行存儲(chǔ)數(shù)據(jù)庫(kù),存在的問(wèn)題是,按行存儲(chǔ)的數(shù)據(jù)在物理層面占用的是連續(xù)存儲(chǔ)空間,不適合海量數(shù)據(jù)存儲(chǔ)。
Redis在生產(chǎn)中使用的最多的是用作數(shù)據(jù)緩存。
服務(wù)器先在緩存中查詢(xún)數(shù)據(jù),查到則返回,查不到則到DB中查找。
2.1 緩存數(shù)據(jù)的分類(lèi)
(1)實(shí)時(shí)同步數(shù)據(jù):要求緩存中的數(shù)據(jù)必須與DB中的數(shù)據(jù)保持一致。即只要DB中的數(shù)據(jù)發(fā)生了變更,緩存中的數(shù)據(jù)立即消失。
(2)階段性同步數(shù)據(jù):沒(méi)有必要與DB的數(shù)據(jù)時(shí)刻保持一致,只要大差不差就行。實(shí)現(xiàn)方法是為緩存數(shù)據(jù)添加了生存時(shí)長(zhǎng)屬性。
2.2 特點(diǎn)
(1)Redis的所有操作是在內(nèi)存中進(jìn)行的;
(2)Redis的數(shù)據(jù)可以支持持久化(包括RDB和AOF兩種方式);
(3)Redis提供了高可用的主從集群功能,可以確保系統(tǒng)的安全性;
(4)豐富的數(shù)據(jù)類(lèi)型:String、List、Set、Zset和Hash,還有BitMap、HyperLoglog、Geospatial。
BitMap:一般用于大數(shù)據(jù)量的二值性統(tǒng)計(jì);
HyperLoglog:用于對(duì)數(shù)據(jù)量超級(jí)龐大的日志做去重統(tǒng)計(jì);
Geospatial:主要用于地理位置相關(guān)的計(jì)算。
(5)數(shù)據(jù)過(guò)期功能、發(fā)布/訂閱功能、簡(jiǎn)單事務(wù)功能、腳本擴(kuò)展功能。
(6)ACL(Access Control List)權(quán)限功能,可以為不同的用戶(hù)定制不同的用戶(hù)權(quán)限。
(7)支持多線(xiàn)程IO模型。
二、Redis的IO模型
多線(xiàn)程IO模型(不是一個(gè)純粹的多線(xiàn)程模型,主任務(wù)還是單線(xiàn)程)中的“多線(xiàn)程”僅用于接受、解析客戶(hù)端的請(qǐng)求,然后將解析出的請(qǐng)求寫(xiě)入到任務(wù)隊(duì)列中,而對(duì)具體任務(wù)(命令)的處理,仍是由主線(xiàn)程(單線(xiàn)程)處理,這樣做使得用戶(hù)無(wú)需考慮線(xiàn)程安全的問(wèn)題,無(wú)需考慮事務(wù)控制,無(wú)需考慮像LPUSH/LPOP等命令的執(zhí)行順序問(wèn)題。
三、多路選擇算法
每個(gè)客戶(hù)端若要向Redis提交請(qǐng)求,都需要與Redis建立一個(gè)socket連接,并向事件分發(fā)器注冊(cè)一個(gè)事件,一旦該事件發(fā)生就表明連接已經(jīng)就緒,而一旦連接就緒,事件分發(fā)器就會(huì)感知到,然后獲取客戶(hù)端通過(guò)該連接發(fā)送的請(qǐng)求,并將由該事件分發(fā)器所綁定的這個(gè)唯一的線(xiàn)程來(lái)處理。事件分發(fā)器會(huì)根據(jù)不同的就緒事件將任務(wù)交由不同的事件處理器去處理。
Redis的單線(xiàn)程模型采用了多路復(fù)用技術(shù)(從多個(gè)socket連接請(qǐng)求中選擇一個(gè)放到人物隊(duì)列給線(xiàn)程處理)。對(duì)于多路復(fù)用器的多路選擇算法常見(jiàn)的有三種:select模型、poll模型、epoll模型。
select模型和poll模型的選擇算法:兩個(gè)本質(zhì)上事一樣的,只是select使用的是數(shù)組,poll使用的是鏈表。采用的是輪詢(xún)算法,該模型對(duì)客戶(hù)端的就緒處理是有延遲的。
epoll模型的選擇算法:采用的是回調(diào)方式,監(jiān)聽(tīng)到就緒就處理(也是使用隊(duì)列的)。根據(jù)就緒事件發(fā)生后的處理方式不同又分為L(zhǎng)T模型和ET模型。
四、redis的安裝與啟停
4.1 安裝
下載
wget http://download.redis.io/releases/redis-6.2.1.tar.gz
解壓
tar -zxvf redis-6.2.1.tar.gz -C /opt/apps
編譯
進(jìn)入安裝目錄
使用make指令編譯:
安裝
make install
4.2 啟動(dòng)
補(bǔ)充:后臺(tái)啟動(dòng)方式
nohup redis-server &
補(bǔ)充:配置式后臺(tái)啟動(dòng)方式
修改配置文件:
搜索:
改為yes(配置為守護(hù)進(jìn)程):
停止
redis-cli shutdown
4.3 連接前的配置
使其可以監(jiān)聽(tīng)所有接口:
關(guān)閉保護(hù)模式:
requirepass行改成下面: