更新時(shí)間:2019-02-13 10:29 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽17381次
Remote Dictionary Server(Redis) 是一個(gè)開(kāi)源的由Salvatore Sanfilippo使用ANSI C語(yǔ)言開(kāi)發(fā)的key-value數(shù)據(jù)存儲(chǔ)服務(wù)器。其值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等類(lèi)型,所以它通常也被稱(chēng)為數(shù)據(jù)結(jié)構(gòu)服務(wù)器。
Redis特點(diǎn)
redis足夠簡(jiǎn)單和穩(wěn)定
支持豐富的數(shù)據(jù)結(jié)構(gòu)
內(nèi)存存儲(chǔ)讀寫(xiě)性能優(yōu)秀
提供持久化的支持
支持事務(wù)操作
提供主從復(fù)制功能
Redis與memcache性能壓力測(cè)試比較
Redis的典型應(yīng)用場(chǎng)景:
一:緩存熱點(diǎn)數(shù)據(jù)
熱點(diǎn)數(shù)據(jù)(經(jīng)常會(huì)被查詢,但是不經(jīng)常被修改或者刪除的數(shù)據(jù)),首選是使用redis緩存,redis的性能非常優(yōu)秀。
二:計(jì)數(shù)器
諸如統(tǒng)計(jì)點(diǎn)擊數(shù)、訪問(wèn)數(shù)、點(diǎn)贊數(shù)、評(píng)論數(shù)、瀏覽數(shù)等應(yīng)用,由于單線程,可以避免并發(fā)問(wèn)題,保證數(shù)據(jù)的正確性,并且100%毫秒級(jí)性能,同時(shí)開(kāi)啟Redis持久化,以便于持久化數(shù)據(jù)。
三:?jiǎn)尉€程機(jī)制
驗(yàn)證前端的重復(fù)請(qǐng)求,可以自由擴(kuò)展類(lèi)似情況),可以通過(guò)redis進(jìn)行過(guò)濾,比如,每次請(qǐng)求將Request IP、參數(shù)、接口等hash作為key存儲(chǔ)redis(冪等性請(qǐng)求),設(shè)置多長(zhǎng)時(shí)間有效期,然后下次請(qǐng)求過(guò)來(lái)的時(shí)候先在redis中檢索有沒(méi)有這個(gè)key,進(jìn)而驗(yàn)證是不是一定時(shí)間內(nèi)過(guò)來(lái)的重復(fù)提交;再比如,限制用戶登錄的次數(shù),比如一天錯(cuò)誤登錄次數(shù)10次等。
秒殺系統(tǒng),基于redis是單線程特征,防止出現(xiàn)數(shù)據(jù)庫(kù)超賣(mài);
全局增量ID生成等;
四:排行榜
誰(shuí)得分高誰(shuí)排名在前,比如點(diǎn)擊率最高、活躍度最高、銷(xiāo)售數(shù)量最高、投票最高的前10名排行等等;
五:分布式鎖
使用redis可以實(shí)現(xiàn)分布式鎖,為了確保分布式鎖可用,我們至少要確保鎖的實(shí)現(xiàn)同時(shí)滿足以下四個(gè)條件:
互斥性,在任意時(shí)刻,只有一個(gè)客戶端能持有鎖。
不會(huì)發(fā)生死鎖,即使有一個(gè)客戶端在持有鎖的期間崩潰而沒(méi)有主動(dòng)解鎖,也能保證后續(xù)其他客戶端能加鎖。
具有容錯(cuò)性,只要大部分的Redis節(jié)點(diǎn)正常運(yùn)行,客戶端就可以加鎖和解鎖。
解鈴還須系鈴人,加鎖和解鎖必須是同一個(gè)客戶端,客戶端不能解他人加的鎖。
六:Session存儲(chǔ)
使用Redis的進(jìn)行會(huì)話緩存(session cache)是非常常見(jiàn)的一種場(chǎng)景。用Redis緩存會(huì)話比其他存儲(chǔ)(如Memcached)的優(yōu)勢(shì)在于:Redis提供持久化,目前大量的方案均采用了redis作為session的存儲(chǔ)方案。
高薪課程推薦:不得不精Redis
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)