Redis分布式的理解


redis 是一個基於內存的高性能 key-value數據庫,支持豐富的數據類型(String,List , Set ,Sorted Set,Hash )redis中的單個value的存儲限制是1G,比 Memcached的1MB要強大太多。

問題一:  

如何保證 redis 的高並發和高可用?redis 的主從復制原理能介紹一下么?redis 的哨兵原理能介紹一下么?

面試官心理分析:

其實問這個問題,主要是考考你,redis 單機能承載多高並發?如果單機扛不住如何擴容扛更多的並發?redis 會不會掛?既然 redis 會掛那怎么保證 redis 是高可用的?

其實針對的都是項目中你肯定要考慮的一些問題,如果你沒考慮過,那確實你對生產系統中的問題思考太少。

面試題剖析:

如果你用 redis 緩存技術的話,肯定要考慮如何用 redis 來加多台機器,保證 redis 是高並發的,還有就是如何讓 redis 保證自己不是掛掉以后就直接死掉了,即 redis 高可用。

由於此節內容較多,因此,會分為兩個小節進行講解。 - redis 主從架構 - redis 基於哨兵實現高可用

redis 實現高並發主要依靠主從架構,一主多從,一般來說,很多項目其實就足夠了,單主用來寫入數據,單機幾萬 QPS,多從用來查詢數據,多個從實例可以提供每秒 10w 的 QPS。

如果想要在實現高並發的同時,容納大量的數據,那么就需要 redis 集群,使用 redis 集群之后,可以提供每秒幾十萬的讀寫並發。

redis 高可用,如果是做主從架構部署,那么加上哨兵就可以了,就可以實現,任何一個實例宕機,可以進行主備切換。

 

問題二:

 

MySQL 里有 2000w 數據,redis 中只存 20w 的數據,如何保證 redis 中的數據都是熱點數據

 

相關知識:redis 內存數據集大小上升到一定大小的時候,就會施行數據淘汰策略。redis 提供 6 種數據淘汰策略:

 

voltile-lru:從已設置過期時間的數據集(server.db[i].expires)中挑選最近最少使用的數據淘汰

 

volatile-ttl:從已設置過期時間的數據集(server.db[i].expires)中挑選將要過期的數據淘汰

 

volatile-random:從已設置過期時間的數據集(server.db[i].expires)中任意選擇數據淘汰

 

allkeys-lru:從數據集(server.db[i].dict)中挑選最近最少使用的數據淘汰

 

allkeys-random:從數據集(server.db[i].dict)中任意選擇數據淘汰

 

no-enviction(驅逐):禁止驅逐數據

 

最新大廠關於Redis面試真題:

    • Pipeline 有什么好處,為什么要用 pipeline?
    • 是否使用過 Redis 集群,集群的原理是什么?
    • Redis 集群方案什么情況下會導致整個集群不可用?
    • Redis 支持的 Java 客戶端都有哪些?官方推薦用哪個?
    • Jedis 與 Redisson 對比有什么優缺點?
    • Redis 如何設置密碼及驗證密碼?
    • 說說 Redis 哈希槽的概念?
    • Redis 集群的主從復制模型是怎樣的?
    • Redis 集群會有寫操作丟失嗎?為什么?
    • Redis 集群之間是如何復制的?
    • Redis 集群最大節點個數是多少?
    • Redis 集群如何選擇數據庫?
    • 怎么測試 Redis 的連通性?
    • 怎么理解 Redis 事務?
    • Redis 事務相關的命令有哪幾個?
    • Redis key 的過期時間和永久有效分別怎么設置?
    • Redis 如何做內存優化?
    • Redis 回收進程如何工作的?
    • 都有哪些辦法可以降低 Redis 的內存使用情況呢?
    • Redis 的內存用完了會發生什么?
    • 一個 Redis 實例最多能存放多少的 keys?List、Set、Sorted Set他們最多能存放多少元素?
    • Redis 最適合的場景?
    • 假如 Redis 里面有 1 億個 key,其中有 10w 個 key 是以某個固定的已知的前綴開頭的,如果將它們全部找出來?
    • 如果有大量的 key 需要設置同一時間過期,一般需要注意什么?
    • 使用過 Redis 做異步隊列么,你是怎么用的?
    • 使用過 Redis 分布式鎖么,它是什么回事?

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM