新聞中心
Redis限流是利用Redis服務(wù)在一定時(shí)間內(nèi)限制客戶端訪問(wèn)頻率的一種有效解決方案。它通過(guò)在Redis中存儲(chǔ)一些限流規(guī)則,使客戶端在訪問(wèn)某個(gè)服務(wù)時(shí),自動(dòng)做出合理的限流處理,以達(dá)到保護(hù)服務(wù)質(zhì)量的作用。

Redis限流也經(jīng)常被用來(lái)應(yīng)對(duì)攻擊,通過(guò)限制過(guò)快的訪問(wèn)請(qǐng)求,同時(shí)通過(guò)令牌柜/令牌桶算法等來(lái)實(shí)現(xiàn)準(zhǔn)入控制,可以有效避免攻擊者對(duì)服務(wù)的高頻攻擊。
然而在有些情況下,Redis限流依然會(huì)失去作用,而原因也很簡(jiǎn)單明了:
1. 如果準(zhǔn)入控制策略有缺陷,攻擊可能會(huì)事半功倍,Redis限流可能看來(lái)像孩子一樣把門給推開(kāi)了。
2. 如果Redis服務(wù)出現(xiàn)雪崩效應(yīng),將導(dǎo)致限流無(wú)效,客戶端得不到穩(wěn)定的限流服務(wù),很容易發(fā)生集中訪問(wèn)和高頻攻擊。
因此,對(duì)于Redis限流,要想有效發(fā)揮它的作用,既要及時(shí)補(bǔ)充準(zhǔn)入控制策略,避免攻擊者高頻率攻擊;也要及時(shí)完善Redis數(shù)據(jù)庫(kù)的可用性,保證其較高的穩(wěn)定性,從而能夠給客戶端提供穩(wěn)定的服務(wù)質(zhì)量。
Redis限流是一種有效的服務(wù)限流能力,也是一種可以有效保護(hù)服務(wù)質(zhì)量的相對(duì)可靠的技術(shù)。 但是它在某些情況下,依然可能失去作用,主要原因在于準(zhǔn)入策略上的缺陷,以及Redis服務(wù)的可用性上的差異。 因此,要想有效的發(fā)揮Redis限流的作用,我們要及時(shí)補(bǔ)充準(zhǔn)入控制策略,及時(shí)完善Redis數(shù)據(jù)庫(kù)的可用性。
//Redis限流示例
local IP = KEYS[1]
local limitCount = tonumber(ARGV[1])
local currentTime = ARGV[2]
if redis.call('get',ip) then
--檢查是否超過(guò)限制
if tonumber(redis.call('get',ip)) >= limitCount then
return 0
else
--沒(méi)有超過(guò)限流
redis.call('INCRBY', ip, 1)
redis.call('EXPIRE',ip, currentTime+60)
return 1
end
else
--沒(méi)有這個(gè)IP就設(shè)置
redis.call("SET",ip,1)
redis.call('EXPIRE',ip, currentTime+60)
return 1
end
創(chuàng)新互聯(lián)服務(wù)器托管擁有成都T3+級(jí)標(biāo)準(zhǔn)機(jī)房資源,具備完善的安防設(shè)施、三線及BGP網(wǎng)絡(luò)接入帶寬達(dá)10T,機(jī)柜接入千兆交換機(jī),能夠有效保證服務(wù)器托管業(yè)務(wù)安全、可靠、穩(wěn)定、高效運(yùn)行;創(chuàng)新互聯(lián)專注于成都服務(wù)器托管租用十余年,得到成都等地區(qū)行業(yè)客戶的一致認(rèn)可。
分享名稱:Redis限流失去作用(redis限流無(wú)效)
文章位置:http://m.fisionsoft.com.cn/article/djdddph.html


咨詢
建站咨詢
