總之一句話,用redis就是為了防止高併發訪問量大的情況下,你的伺服器gg了,就像是100w個賬號搶周杰倫演唱會2w個票時,大麥崩了!!!錢都花不出去!啥也不是!!
出現這個問題的原因就是多人同時訪問資料庫,造成資料庫的崩潰。這時候就出現了redis(不是黃牛的意思!!)。redis作為乙個實現資料的快取,主要作用就是在訪問資料庫之前,先看看redis中有沒有,要是有就直接拿走,如果沒有就再去資料庫中查詢(如果查到了,返回資料並且放在redis裡),最直接的優點就是減少訪問資料庫的次數
面試可能會問到redis的問題!
1:快取穿透、擊穿:
一般出現這樣的問題,是因為當我們查詢一條肯定不存在的資料的時候,快取中沒有,就會透過快取來查詢資料庫,資料庫也不存在,這樣就不會將值儲存在快取中,最後還是快取和資料庫中都沒有,如果一直訪問這條資料。我們就對資料庫進行頻繁的查詢,給資料庫帶來壓力;
解決方法:當查詢的時候,如果快取和資料庫中都沒有,我們就將這個資料以空的形式存放在快取中,(或者是給乙個false的標示)這樣就不用去資料庫就可以知道不存在,減少對資料庫查詢的次數,當我們這個值發生改變的時候,我們在重新進行賦值;
2:併發情況
當我們大量訪問都是查詢乙個快取中沒有的資料時,這樣就會全去資料庫中進行查詢,可能會造成資料庫的宕機;
解決方法:在查詢的時候,新增乙個同步鎖,只有第一條資料去資料庫中查並且返回到redis中後才能查詢,這是資料庫中已近存在了值,這樣也可以避免;
3:雪崩
大量資料的訪問時間失效,這樣使用者就會訪問到資料庫,第一台資料庫崩潰了,訪問就會到第二台資料庫進行查詢,這樣會導致第二台的也崩潰;
解決方法:就是設定失效時間時,不要一起失效,或者是設定在訪問量少的時候,或者設定為永遠不失效;
redis的一大特點就是可以將資料進行持久化,在一定程度上確保了資料的安全性,但不是絕對的
首先持久化分為rdb(快照持久化)和aof(精細持久化)
快照持久化就這點東西 有問題再說吧!
面試中經常出現的演算法
面試中經常出現的演算法 面試中經常出現的演算法 2010 09 21 09 01 分類 面試題二分查詢的 int bfind int a,int len,int val else if a m val else return m return 1 沒有找到 寫出在母串中查詢子串出現次數的 int c...
CSS實戰中經常出現的問題。
追夢子前端部落格。2.button高度問題 button在高度計算上始終使用了quirks模式。在quirks模式下,邊框的計算是在元素的寬度內的,而不像標準模式一樣計算在外部,所以在text和button上同時設定邊框就會得到button的高度比text小的現象。所以文字框要與button按鈕對齊...
面試中經常出現的演算法1(整理)
二分查詢的 int bfind int a,int len,int val else if a m val else return m return 1 沒有找到 寫出在母串中查詢子串出現次數的 int count1 char str,char s if s2 0 count str return ...