Redis面試題(六)

  1. Redis如何做大量數據插入?
    答:從Redis2.6開始,redis-cli支持一種新的被稱之爲pipe mode的新模式,來用於執行大量數據插入的工作。

  2. 說說Redis的Pipeline是什麼?
    答:Pipeline就是管道的意思。而管道本身是能夠承載流式數據的一個長鏈路,能夠對做到對事件的緩衝效果。

  3. 爲什麼需要Redis的Pipeline?
    答:首先要了解Redis的工作過程是基於請求/響應模式的,所以客戶端發出一個請求發出後,要等到這個請求被服務端響應回來才能繼續發出下一個請求,這樣要是有大批的請求需要處理,不僅要來回好多次,而且這好幾次都是I/O請求,所以Pipeline應運而生了,它允許客戶端一次性發送多條命令,不需要等待上一條命令的處理結果,最後所有命令一起處理完返回就好了。

  4. 說說Redis的Pipeline的實現思路?
    答:首先客戶端會將多條命令先放入緩衝區,最後再一次性發給Redis,然後Redis執行完這些命令後,再把結果統一返回。

  5. 使用Redis的Pipeline有沒什麼注意點?
    答:不要一次性把大量的命令都放到一個Pipeline中,要知道緩衝區也是有大小限制的,而且命令涉及的數據量太多的話,網絡傳輸延遲就會增加,大量的Redis內存也會被消耗,可以把大量的命令拆分給多個
    Pipeline,分別執行。

  6. Twemproxy是什麼?
    答:Twemproxy是Twitter維護的(緩存)代理系統,代理Memcached的ASCII協議和Redis協議。它是單線程程序,使用c語言編寫,運行起來非常快。它是採用Apache 2.0 license的開源軟件。 Twemproxy支持自動分區,如果其代理的其中一個Redis節點不可用時,會自動將該節點排除(這將改變原來的keys-instances的映射關係,所以你應該僅在把Redis當緩存時使用Twemproxy)。 Twemproxy本身不存在單點問題,因爲你可以啓動多個Twemproxy實例,然後讓你的客戶端去連接任意一個Twemproxy實例。 Twemproxy是Redis客戶端和服務器端的一箇中間層,由它來處理分區功能應該不算複雜,並且應該算比較可靠的。

  7. Redis與其他key-value存儲有什麼不同?
    答:Redis提供的數據類型更豐富,而且還提供了原子操作。Redis是基於內存的,但是一樣可以持久化到磁盤。

  8. Redis如何做內存優化?
    答:儘量使用hash,因爲hash使用的內存很少。所以如果要存入一些鍵值,儘量把他們抽象成對象,而不是把一個一個的字段設成key值分別保存,總而言之,存儲數據時,在可以的情況下,儘量帶入抽象的思維。

  9. 都有哪些辦法可以降低Redis內存的使用情況呢?
    答: 如果使用的Redis實例是32位的,那麼可以好好利用 Hash,list, set,zset等集合類型數據,因爲通常情況下很多小的Key-Value鍵值對可以用更緊湊的方式存放到一起的。

  10. 如果有大量的key需要設置同一時間過期,一般需要注意什麼?
    答:如果大量的key過期時間設置的過於集中的話,一旦到了過期的那個時間點,redis可能會出現短暫的卡頓現象。所以可以在時間上加一個隨機值,讓過期時間變得分散一 些。

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