摘要:若其他線程發(fā)現(xiàn)獲取鎖失敗,則睡眠后重試。容易造成死鎖問題布隆過濾器,迅速判斷一個(gè)元素是否在一個(gè)集合中。將已存在的緩存放到布隆過濾器中,當(dāng)黑客訪問不存在的緩存時(shí)迅速返回避免緩存及掛掉。
redis理解
緩存雪崩
redis掛了,請(qǐng)求全走數(shù)據(jù)庫
對(duì)緩存數(shù)據(jù)設(shè)置了相同的過期時(shí)間,導(dǎo)致某段時(shí)間,緩存全部同時(shí)失效,請(qǐng)求全走數(shù)據(jù)庫
緩存的過期時(shí)間加上一個(gè)隨機(jī)值,就可以減少緩存在同一時(shí)間過期。
假如redis真的掛啦,可以設(shè)置本地緩存+限流,避免redis掛了。假如掛了,redis持久化,重啟后自動(dòng)從磁盤上加載數(shù)據(jù),快速恢復(fù)緩存數(shù)據(jù)。
緩存穿透
請(qǐng)求的數(shù)據(jù)在緩存大量不命中【負(fù)數(shù)】,導(dǎo)致請(qǐng)求走數(shù)據(jù)庫。
因?yàn)檎?qǐng)求參數(shù)是不合法,我們可以用過濾器進(jìn)行攔截,不合法就不讓這個(gè)請(qǐng)求到數(shù)據(jù)庫層!
當(dāng)數(shù)據(jù)庫找不到,我們可以將空對(duì)象設(shè)置到緩存里面,下次請(qǐng)求從緩存中獲取?!具@個(gè)緩存時(shí)間可以設(shè)短一點(diǎn)】
緩存擊穿
緩存在某個(gè)時(shí)間點(diǎn)過期的時(shí)候,恰好在這個(gè)時(shí)間點(diǎn)對(duì)這個(gè)Key有大量的并發(fā)請(qǐng)求過來,這些請(qǐng)求發(fā)現(xiàn)緩存過期一般都會(huì)從后端DB加載數(shù)據(jù)并回設(shè)到緩存,這個(gè)時(shí)候大并發(fā)的請(qǐng)求可能會(huì)瞬間把后端DB壓垮。
使用互斥鎖。在根據(jù)key獲得的value值為空時(shí),先鎖上,再從數(shù)據(jù)庫加載,加載完畢,釋放鎖。若其他線程發(fā)現(xiàn)獲取鎖失敗,則睡眠50ms后重試?!救菀自斐伤梨i問題】
布隆過濾器,迅速判斷一個(gè)元素是否在一個(gè)集合中?!緦⒁汛嬖诘木彺娣诺讲悸∵^濾器中,當(dāng)黑客訪問不存在的緩存時(shí)迅速返回避免緩存及DB掛掉?!?/p>
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/7238.html
摘要:持久化到中反向代理的負(fù)載均衡基于的集群搭建如何實(shí)現(xiàn)從中訂閱消息轉(zhuǎn)發(fā)到客戶端的擴(kuò)展是阻塞式,使用訂閱發(fā)布模式時(shí),會(huì)導(dǎo)致整個(gè)進(jìn)程進(jìn)入阻塞。緩存是用于解決高并發(fā)場(chǎng)景下系統(tǒng)的性能及穩(wěn)定性問題的銀彈。 showImg(https://segmentfault.com/img/bVYE6k?w=900&h=385); Redis 是由意大利程序員 Salvatore Sanfilippo(昵稱:a...
閱讀 2583·2021-10-11 10:58
閱讀 1165·2021-09-29 09:34
閱讀 1526·2021-09-26 09:46
閱讀 3847·2021-09-22 15:31
閱讀 745·2019-08-30 15:54
閱讀 1470·2019-08-30 13:20
閱讀 1263·2019-08-30 13:13
閱讀 1496·2019-08-26 13:52