Redis中間件(1)

爲什麼會需要用到Redis中間件,難道MySQL/Oracle他不香嗎!!!不是他們不香了,是關係型數據庫,不適合應對高併發場景,一個技術總有兩面性,要想數據準確又性能高的市面上還沒有出現,在併發的場景下關係型數據庫都有個致命的缺點,就是需要磁盤IO操作,而Redis他是基礎內存操作的,性能大大提高了,上面也說了技術總有兩面性,Redis也有他的缺點,就是數據容易不準確,新手使用很容易造成緩存與數據不一致性。

緩存查詢代碼如下,細節有個,數據失效時間哈,即使數據緩存不一致了,很快也會因爲數據過期,自動去查詢數據庫填充緩存,就又數據緩存一致了在這裏插入圖片描述增刪改代碼如下判斷緩存是否有,沒有去取數據在存緩存,有就直接返回在這裏插入圖片描述

緩存穿透

緩存穿透問題,這個問題誕生的原因是,有人故意去訪問原本就不可能存在的key值,這樣所有請求還是打到了數據庫上面,導致數據庫宕機,之後就整個服務雪崩。

代碼如下,維護這個也挺麻煩。。。這東西還可能誤判,導致去走數據庫,雖然機率很小,不過這很小的流量數據庫還是能抗住的在這裏插入圖片描述在這裏插入圖片描述

緩存擊穿

緩存擊穿,導致的原因是,在熱點key失效的一瞬間,流量打過來,關係型數據庫當場跪地。。。

解決辦法設好過期值 別再軟件使用高峯期讓key值過期,比如讓他半夜三點去過期,要是這個時候的流量,都扛不住這系統可能大的不是我所能想的了。。。

Redis備份策略

備份策略有兩種,RDB,AOF,各有好處與缺點,

RDB:是定時去記錄當前Redis的數據,這樣做的好處是,他備份的原始數據,數據恢復速度快,缺點是定時去備份,萬一沒有來得及備份,宕機了就有部分數據沒有了。

AOF:他是去記錄每個,Redis的增刪改查操作命令,這樣做的好處的記錄齊全,沒有數據丟失,缺點是記錄的是命令需要大量時間去執行一遍命令。

默認是RDB備份方式,但是生產環境一般都會改成RDB+AOF的方式,首先RDB先去恢復數據,再去AOF恢復RDB沒有恢復到的數據

redis.conf改配置文件

rdb(恢復快) 直接把redis數據寫到硬盤 set age 10,重啓後從硬盤恢復(相當於存表),默認方式

      save 秒 key操作次數

  save 1  50 (如果1秒操作了50次key,就會保存)

 aof(保存快)  把指令寫硬盤,重啓後執行指令恢復.(相當於存sql語句)

      appendonly yes就是開啓aof方式



  # appendfsync always  一直同步(每隔指令都同步,最安全,性能最低)

    appendfsync everysec  (每秒同步,折中)

  # appendfsync no  不同步
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章