鄰近年底,決定辭職,自認為即使沒有找到很滿意的作業,也應該不會差,事實是有點自信回頭,雖然找到了作業,但途中也受到了打擊,不得不承認學習的激情不知何時,漸漸熄滅,直到認識一個女生,她讓我對未來充滿著信心,曾今何時,也在這寫過一些技術筆記,如今已煙消云散,昨日已去,來日可期,后面我將吧自己日常積累的技術知識,記錄在這里,利人利己,廢話到此為止,下面總結一下面試遇到的幾個問題,
redis穿透與雪崩?
1. 穿透:
理解:當redis作用于資料快取的時候,快取的資料來源于db,而當由于key在redis中未獲取到value時,則邏輯代碼會從資料庫中獲取value,這種現象叫做快取穿透,
若存在大量key穿過快取,從db獲取value,則會導致資料庫壓力劇增,甚至癱瘓,
方案: a.當出現大量無效key時,會從資料庫獲取value,使用分布式互斥鎖對load db進行控制,
b.對請求進行驗證,判斷是否是有效的key,比如布隆過濾器,
c.無論key是否取到值,直接回傳null,對不太穩定的快取設定過期時間,如果快取過期,異步起一個執行緒從db中獲取資料,
比較:待補充
2,雪崩:
理解:redis key 大面積過期
redis 集群搭建總結(具體搭建步驟,網上很多不細述:https://my.oschina.net/lyyjason/blog/1842002--cluster搭建地址)
##redis主從復制與哨兵模式搭配使用:前者提供高可用,后者提供master選舉
##redis-cluster =主從復制+哨兵模式+高并發+可擴展,
1.下載redis
2.安裝gcc 執行make命令安裝redis
主從復制:
啟動多個redis ,slaveof ip port 設定master ,info replication 查看redis主從資訊
注意項:1.當master存在密碼是 slave 必須組態檔masterauth設定主機的密碼,或者使用config set masterauth手動設定密碼,不然即使slaveof執
行成功,master-link-status 顯示為down,設定完masterauth密碼后則顯示up,
2.當主從復制,master宕機,必須手動切換slave為master不然從機不會進行master選舉,從機master-link-status變成down,會一直等待master啟動,master-link-
status恢復成up
3.master 默認可寫可讀,slave 默認只讀,可以修改slave-read-only yes:只讀 no:讀寫
哨兵模式:master宕機自動選舉master
注意項:master宕機重啟后 會作為slave自動同步到選舉后的master上 ,大件事 master和slave密碼要保持一致,不然選舉后將slave切換成maseter會因此失敗,
cluster集群:密碼也需要保持一致,而且需要修改/usr/local/share/gems/gems/redis-3.3.3/lib/redis/client.rb
(https://img2018.cnblogs.com/blog/1909126/201912/1909126-20191229210642240-329425897.png)修改成正確的密碼即可
cluster:每個key通過CRC16(key)%16384來決定放置哪個槽,共有16384個槽被分配到不同的master中(slave中是沒有分配曹的),從而將key放入對應的master中,當master
宕機,其slave會升級成為master,并將原master的曹與資料轉移到新的master上,
擴容:就是添加新的master-slave 讓后將其他master的槽分攤給新家的master即可,槽中的資料也會隨之轉移,
縮容:相反,
命令: 查看集群節點
cluster nodes
查看key對應的slot
cluster keyslot key
查看slot和節點的對應關系
cluster slots
redis實作分布式鎖,放值重復請求,分布式id等待續,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/26250.html
標籤:NoSQL
上一篇:mongo shell
