国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

wordpress模版怎么上傳寧波關(guān)鍵詞優(yōu)化企業(yè)網(wǎng)站建設(shè)

wordpress模版怎么上傳,寧波關(guān)鍵詞優(yōu)化企業(yè)網(wǎng)站建設(shè),獵頭做單都有什么網(wǎng)站,做軟件好還是做網(wǎng)站好1. 什么是緩存穿透,怎么解決? 緩存穿透是指用戶請求的數(shù)據(jù)在緩存中不存在即沒有命中,同時在數(shù)據(jù)庫中也不存在,導(dǎo)致用戶每次請求該數(shù)據(jù)都要去數(shù)據(jù)庫中查詢一遍。如果有惡意攻擊者不斷請求系統(tǒng)中不存在的數(shù)據(jù),會導(dǎo)致短時…

1. 什么是緩存穿透,怎么解決?

????????緩存穿透是指用戶請求的數(shù)據(jù)在緩存中不存在即沒有命中,同時在數(shù)據(jù)庫中也不存在,導(dǎo)致用戶每次請求該數(shù)據(jù)都要去數(shù)據(jù)庫中查詢一遍。如果有惡意攻擊者不斷請求系統(tǒng)中不存在的數(shù)據(jù),會導(dǎo)致短時間大量請求落在數(shù)據(jù)庫上,造成數(shù)據(jù)庫壓力過大,甚至導(dǎo)致數(shù)據(jù)庫承受不住而宕機(jī)崩潰。

????????緩存穿透的關(guān)鍵在于在Redis中查不到key值,它和緩存擊穿的根本區(qū)別在于傳進(jìn)來的key在Redis中是不存在的。假如有黑客傳進(jìn)大量的不存在的key,那么大量的請求打在數(shù)據(jù)庫上是很致命的問題,所以在日常開發(fā)中要對參數(shù)做好校驗(yàn),一些非法的參數(shù),不可能存在的key就直接返回錯誤提示。

正常的查詢流程

緩存穿透查詢流程

解決方法:

方案一:緩存空數(shù)據(jù)

  • 將無效的key存放進(jìn)Redis中:

當(dāng)出現(xiàn)Redis查不到數(shù)據(jù),數(shù)據(jù)庫也查不到數(shù)據(jù)的情況,也將其緩存起來,但設(shè)置一個較短的過期時間,這樣即使后續(xù)的惡意請求再次訪問相同的鍵,也能夠從緩存中獲取結(jié)果,減輕數(shù)據(jù)庫壓力。但這種處理方式是有問題的,假如傳進(jìn)來的這個不存在的Key值每次都是隨機(jī)的,那存進(jìn)Redis也沒有意義。

優(yōu)點(diǎn):實(shí)現(xiàn)簡單

缺點(diǎn):消耗內(nèi)存,可能會發(fā)生數(shù)據(jù)不一致的問題。

方案二:布隆過濾器

  • 使用布隆過濾器:

????????在緩存之前再加一個布隆過濾器,將數(shù)據(jù)庫中的所有key都存儲在布隆過濾器中,在查詢Redis前先去布隆過濾器查詢 key 是否存在,如果不存在就直接返回,不讓其訪問數(shù)據(jù)庫,從而避免了對底層存儲系統(tǒng)的查詢壓力。

  • 布隆過濾器的設(shè)計(jì)實(shí)現(xiàn)原理

????????如果數(shù)據(jù)比較少,可以把數(shù)據(jù)庫中的數(shù)據(jù)全部放到內(nèi)存的一個map中。這樣能夠非??焖俚淖R別,數(shù)據(jù)在緩存中是否存在。如果存在,則讓其訪問緩存。如果不存在,則直接拒絕該請求。但如果數(shù)據(jù)量太大,全都放到內(nèi)存中,會占用太多的內(nèi)存空間。因此要使用布隆過濾器。

????????布隆過濾器的底層使用bit數(shù)組存儲數(shù)據(jù),該數(shù)組中的元素默認(rèn)值為0。布隆過濾器第一次初始化的時候,會把數(shù)據(jù)庫中所有已存在的key,經(jīng)過一些列的hash算法(比如:三次hash算法)計(jì)算,每個key都會計(jì)算出多個位置,然后把這些位置上的元素值設(shè)置成1。之后,有用戶key請求過來的時候,再用相同的hash算法計(jì)算位置。

  • 如果多個位置中的元素值都是1,則說明該key在數(shù)據(jù)庫中已存在。這時允許繼續(xù)往后面操作。
  • 如果有1個以上的位置上的元素值是0,則說明該key在數(shù)據(jù)庫中不存在。這時可以拒絕該請求,而直接返回。

????????但若布隆過濾器中存儲的數(shù)據(jù)量過大,會出現(xiàn)誤判的情況,即:原本這個key在數(shù)據(jù)庫中是不存在的,但布隆過濾器確認(rèn)為存在。同時如果數(shù)據(jù)庫中的數(shù)據(jù)更新了,需要同步更新布隆過濾器。但它跟數(shù)據(jù)庫是兩個數(shù)據(jù)源,就可能存在數(shù)據(jù)不一致的情況。因此需要及時同步更新修改的內(nèi)容。

誤判率:數(shù)組越小誤判率就越大,數(shù)組越大誤判率就越小,但是同時帶來了更多的內(nèi)存消耗。

優(yōu)點(diǎn):內(nèi)存占用較少,沒有多余key

缺點(diǎn):實(shí)現(xiàn)復(fù)雜,存在誤判

????????如何選擇:針對一些惡意攻擊,攻擊帶過來的大量key是隨機(jī),那么我們采用第一種方案就會緩存大量不存在key的數(shù)據(jù)。那么這種方案就不合適了,我們可以先對使用布隆過濾器方案進(jìn)行過濾掉這些key。所以,針對這種key異常多、請求重復(fù)率比較低的數(shù)據(jù),優(yōu)先使用第二種方案直接過濾掉。而對于空數(shù)據(jù)的key有限的,重復(fù)率比較高的,則可優(yōu)先采用第一種方式進(jìn)行緩存。

2. 緩存雪崩及解決方案

????????緩存雪崩是指在同一時段大量的緩存key同時失效或者Redis服務(wù)宕機(jī),導(dǎo)致大量請求到達(dá)數(shù)據(jù)庫,帶來巨大壓力。

解決方案:

方案一:均勻過期

????????設(shè)置不同的過期時間,讓緩存失效的時間盡量均勻,避免相同的過期時間導(dǎo)致緩存雪崩,造成大量數(shù)據(jù)庫的訪問。如把每個Key的失效時間都加個隨機(jī)值,setRedis(Key,value,time + Math.random() * 10000);,保證數(shù)據(jù)不會在同一時間大面積失效。

方案二:構(gòu)建緩存高可用集群(針對緩存服務(wù)故障情況)

方案三:服務(wù)熔斷、限流、降級等措施保障。

3. 緩存擊穿及解決方案

????????緩存擊穿跟緩存雪崩有點(diǎn)類似,緩存雪崩是大規(guī)模的key失效,而緩存擊穿是某個熱點(diǎn)的key失效,大并發(fā)集中對其進(jìn)行請求,就會造成大量請求讀緩存沒讀到數(shù)據(jù),從而導(dǎo)致高并發(fā)訪問數(shù)據(jù)庫,引起數(shù)據(jù)庫壓力劇增。這種現(xiàn)象就叫做緩存擊穿。

解決方案:

方案一:互斥鎖

  • 在緩存失效后,通過互斥鎖或者隊(duì)列來控制讀數(shù)據(jù)寫緩存的線程數(shù)量,比如某個key只允許一個線程查詢數(shù)據(jù)和寫緩存,其他線程等待。這種方式會阻塞其他的線程,此時系統(tǒng)的吞吐量會下降。單機(jī)通過synchronized或lock來處理,分布式環(huán)境采用分布式鎖。

????????原理:線程1在查詢緩存發(fā)現(xiàn)未命中的情況下,獲取互斥鎖,然后查詢數(shù)據(jù)庫重建緩存數(shù)據(jù),寫入緩存后,釋放互斥鎖。在線程1重建數(shù)據(jù)的時候,線程2也未命中緩存想重建時,在獲取互斥鎖時會失敗,只能休眠一會兒再次嘗試,直至線程1完成重建緩存的流程釋放互斥鎖后,線程2再查詢緩存并命中。

優(yōu)點(diǎn):強(qiáng)一致性(適用于嚴(yán)格要求緩存一致性的場景)

缺點(diǎn):性能差

方案二

  • 熱點(diǎn)數(shù)據(jù)緩存永遠(yuǎn)不過期。永不過期實(shí)際包含兩層意思:
    • 物理不過期,針對熱點(diǎn)key不設(shè)置過期時間
    • 邏輯過期,把過期時間存在key對應(yīng)的value里,如果發(fā)現(xiàn)要過期了,通過一個后臺的異步線程進(jìn)行緩存的構(gòu)建。

????????原理:線程1在查詢緩存發(fā)現(xiàn)邏輯時間快過期時,獲取互斥鎖,然后后臺開啟一個新的線程,查詢數(shù)據(jù)庫重建緩存數(shù)據(jù),寫入緩存,重置邏輯過期時間,再釋放鎖。當(dāng)線程2在查詢緩存也發(fā)現(xiàn)邏輯時間快過期時,獲取互斥鎖失敗,此時直接從緩存中返回過期的數(shù)據(jù)。

????????優(yōu)點(diǎn):可用性高,性能高

????????缺點(diǎn):存在數(shù)據(jù)不一致的情況(適用于不嚴(yán)格要求緩存一致性的場景)

http://aloenet.com.cn/news/41271.html

相關(guān)文章:

  • 西安做網(wǎng)站公無憂seo博客
  • 做網(wǎng)站需要學(xué)習(xí)多久域名被墻查詢
  • 公司網(wǎng)站制作多少錢好用的磁力搜索引擎
  • 電影網(wǎng)頁制作素材刷關(guān)鍵詞排名seo軟件
  • 網(wǎng)費(fèi)一年多少錢優(yōu)化設(shè)計(jì)電子版在哪找
  • 南京做網(wǎng)站建設(shè)有哪些內(nèi)容做百度推廣多少錢
  • 東莞網(wǎng)站推廣公司建站abc官方網(wǎng)站
  • 上海網(wǎng)站設(shè)計(jì)銷售營銷方案100例
  • 項(xiàng)目宣傳網(wǎng)站模板百度最新版本2022
  • 做wap網(wǎng)站能火嗎合肥網(wǎng)站
  • 網(wǎng)站維護(hù)一年多少費(fèi)收錄排名好的發(fā)帖網(wǎng)站
  • 網(wǎng)站地址欄圖標(biāo)制作企業(yè)高管培訓(xùn)課程有哪些
  • 做酒店管理網(wǎng)站的作用成都網(wǎng)絡(luò)推廣外包
  • wordpress 眾籌模板seo效果最好的是
  • 做百度推廣需要網(wǎng)站嗎單頁站好做seo嗎
  • 大氣網(wǎng)站背景圖怎么快速推廣自己的產(chǎn)品
  • 個人網(wǎng)站開發(fā)淘寶指數(shù)查詢官網(wǎng)
  • 個人網(wǎng)站怎么做微信支付一個企業(yè)該如何進(jìn)行網(wǎng)絡(luò)營銷
  • 西安網(wǎng)站建設(shè)哪個平臺好百度搜索seo
  • 北京網(wǎng)站建設(shè)有哪些深圳搜索引擎優(yōu)化推廣
  • 有什么網(wǎng)站可以做搜索引擎調(diào)詞平臺
  • 上海建設(shè)工程造價協(xié)會官網(wǎng)班級優(yōu)化大師怎么下載
  • 網(wǎng)站建設(shè)佰首選金手指二六職業(yè)培訓(xùn)機(jī)構(gòu)哪家最好
  • 新聞網(wǎng)站如何做原創(chuàng)內(nèi)容肇慶seo外包公司
  • ??诰W(wǎng)站建設(shè)運(yùn)營百度手機(jī)端排名如何優(yōu)化
  • 6黃頁網(wǎng)站建設(shè)互聯(lián)網(wǎng)公司排名2021
  • 網(wǎng)站開發(fā)日常工作廊坊seo推廣
  • wordpress調(diào)用分類圖片大小長沙靠譜的關(guān)鍵詞優(yōu)化
  • 海外域名提示風(fēng)險網(wǎng)站嗎成都網(wǎng)站seo服務(wù)
  • 濟(jì)南網(wǎng)站建設(shè)維護(hù)公司關(guān)鍵詞挖掘工具網(wǎng)站