redis根據(jù)key模糊查詢 達(dá)到物理網(wǎng)卡上限,突然幾十萬的請求訪問Redis的某個(gè)key如何解決?
達(dá)到物理網(wǎng)卡上限,突然幾十萬的請求訪問Redis的某個(gè)key如何解決?對于手持4T redis實(shí)例組,突發(fā)請求峰值為500000 ops。由于mget的廣泛使用,每秒實(shí)際請求數(shù)百萬個(gè)密鑰。萬兆網(wǎng)絡(luò),物
達(dá)到物理網(wǎng)卡上限,突然幾十萬的請求訪問Redis的某個(gè)key如何解決?
對于手持4T redis實(shí)例組,突發(fā)請求峰值為500000 ops。由于mget的廣泛使用,每秒實(shí)際請求數(shù)百萬個(gè)密鑰。
萬兆網(wǎng)絡(luò),物理網(wǎng)卡不是瓶頸,CPU不是,設(shè)計(jì)不好容易成為瓶頸。
主要用于千伏,少量使用和列表,并設(shè)置
替換其他按鍵。密鑰有自己的設(shè)置,查詢時(shí)密鑰過長會降低查詢效率
最近使用redis,使用incrby操作,但是這個(gè)API沒有提供設(shè)置密鑰過期時(shí)間的參數(shù)。
我想出了一個(gè)相對較低的方法。
長限=RedistringService.incrBy公司(limitcachekey,1)
//對于獲取數(shù)字1的線程,設(shè)置密鑰的有效期
如果(limit==1){RedistringService.expired已過期(limitcachekey,2)
}]當(dāng)incrby的返回值為1時(shí),請獲得1的線程幫助設(shè)置密鑰的過期時(shí)間。
由于incrby是原子的,必須只有一個(gè)線程才能獲得1,因此不可能同時(shí)調(diào)用過期的操作。
經(jīng)過驗(yàn)證,這種方法是可行的,但是感覺很低