簡單回顧了redis,在這過程中 首先得了解redis是什麼,redis的運用場景,redis支援哪些資料格式,redis如何運算元據,redis如何實現高可用
redis是什麼:
redis 是乙個開源的使用 ansi c 語言編寫、遵守 bsd 協議、支援網路、可基於記憶體亦可持久化的日誌型、key-value 資料庫,並提供多種語言的 api的非關係型資料庫。
reids是一種nosql 快取資料庫
reids使用場景:
token驗證,驗證碼,seesion共享,分布式鎖,使用reids能減輕伺服器壓力
reids支援哪些資料格式:
redis支援5中基本資料型別 string hash list sort zsort
注意區別sort 和zsort的不同
reids 如何運算元據型別:
掌握對5種資料型別的新增,刪除,過期時間的設定,jedis框架 提供了 對5種型別的操作,springboot 框架整合redis 提供了操作reids的redistemplat模板
redis實現高可用:
什麼高可用:個人理解就是提高乙個服務能有效使用的時常
redis高可用:就是可以提高或者保證 redis能長期有效的執行服務,即使伺服器宕機,也能有處理的方法
單節點伺服器,在伺服器宕機以後,很容易就出現服務不能用,所以,要實現redis高可用,則不可避免的使用到redis的主從複製
主從複製:需要兩台伺服器以上,所以主從複製就能實現高可用中的集群(理解成一模一樣的服務放在不同的機器上),主從複製 能實現資料備份,能實現讀寫分離
通過修改從服氣redis.conf的配置檔案,就能實現主從複製,主從複製,主伺服器用讀寫的許可權,而從伺服器只有讀的許可權,如果此時主伺服器掛點以後,則此時伺服器是沒法重新 找出一台從伺服器當成master伺服器,所以此時整個集群沒有主伺服器,整個系統只能讀,不能寫。要是這種情況,是不是就需要一種功能,這個功能可以在主從複製的情況下主伺服器掛點以後,可以從從伺服器中選出乙個主伺服器,保證系統的高可用-哨兵機制
哨兵機制:reids提供一種功能,該功能是對整個reids群(主從複製),進行監控。這裡就記錄 哨兵機制檢測到主伺服器掛點以後,哨兵機制可以在主服務下面的從伺服器中,通過選舉投票的方法,選出一台從伺服器 來作為主伺服器。哨兵機制是redis提供的乙個程式,和reids 沒什麼關係,可以從redis的埠6379 而哨兵機制的啟動埠是26379 可以看出 他們屬於不同的運用,哨兵機制的啟動 和redis是否啟動是沒有關係的。哨兵機制也可以集群 ,redis作為快取,而快取 會隨著伺服器的關閉 快取資料則會丟失,reids則不會,redis提供兩種方法的持久化rdb aof
持久化(rdb.aof):將記憶體資料儲存到硬碟上,redis預設使用的rdb持久化模式,rdb 模式採用的是二級制的方式持久化,在間隔時間內,把資料寫入乙個臨時檔案,最後將臨時檔案替換上乙個持久化檔案
rdb優點:主線程不需要進行io操作,子執行緒 操作io 效能較快
rdb缺點:因為是間隔時間以內才會進行持久化,則如果在間隔時間內發生宕機或者重啟,則資料丟失
aof預設是關閉,aof 可以當成是乙個日誌檔案,每次操作key都會將當前的操作,拼接在上一次操作後面,aof是檔案操作,頻繁的io操作會響應系統的效能
aof優點:可以保持更高的資料完整性
aof缺點,相對於rdb,aof檔案大於rdb,並且恢復速度慢
以上記錄了redis的提供高可用,主從複製提供了集群,實現了讀寫分離,資料備份,哨兵機制實現了redis服務的監聽,並且在主伺服器掛點以後,從新選舉master,但是如果所有的伺服器都掛點以後 則辦,如果是一直需要工作人員時刻盯著伺服器的運**況,發現一台伺服器掛了以後,則立刻手動重啟?有點不現實 則需要用到一種
keepalived 工具,該工具可以用作重啟伺服器,自動完成,如果從啟不成功則會以郵件的形式通知運維人員
Redis問題總結
參考 參考 現象 使用者大量併發請求的資料 key 對應的資料在redis和資料庫中都不存在,導致儘管資料不存在但還是每次都會進行查db。為什麼key對應資料在快取和db中不存在還會每次都進行db查詢呢?因為很多開發同學寫的 寫的邏輯都是先從redis快取中查一把,如果快取中為空則從db中查,如果d...
redis使用遇到的問題總結
1 純記憶體操作 2 單執行緒操作,避免了頻繁的上下文切換 3 採用了非阻塞i o 多路復用機制 1 快取和資料庫雙寫一致性問題 2 快取雪崩問題 3 快取擊穿問題 4 快取併發競爭問題 前提是對資料有強一致性要求,不能放快取 只能降低不一致發生的概率,無法完全避免 只能保證最終一致性。1 採用正確...
面試 Redis面試常見問題總結
redis採用的是基於記憶體的採用的是單程序單執行緒模型的kv資料庫,由c語言編寫。官方提供的資料是可以達到100000 的qps。這個資料不比採用單程序多執行緒的同樣基於記憶體的kv資料庫memcached差。redis快的主要原因是 完全基於記憶體 資料結構簡單,對資料操作也簡單 使用多路 i ...