1. 程式人生 > >Redis原理解析

Redis原理解析

Redis:

    Nosql快取技術:支援多種資料結構型別,如set(集合),list(連結串列),string(字串),zset(有序集合),hash(雜湊),但是key都是String型別的。

應用場景:

    set:

    list(雙向連結串列):可以用來實現,棧,佇列,堆等

    String:可用於儲存json型別的物件,計數器,一些累計操作。

    zset:

    hash:適用於可分組的物件。

redis採用的是單執行緒的技術,但是他採用了多路IO複用的機制,所以速度很快.

多路IO複用:詳情見我的部落格

資料的儲存

    Redis是通過常見的鍵值對方式來儲存資料的,字串、雜湊、集合、有序集合、列表這五種常見的資料結構型別被Redis所支援,且同時,這五種資料型別是Redis已經經過包裝處理對外部使用人員提供的,在Redis的資料型別的實現機制中,它是通過兩種不同的內部實現方式來事先對資料型別進行封裝的,最為典型的例子就是RedisObject,RedisObject儲存了資料型別和資料指標,同時還有儲存資料鍵值的SDS資料結構,可見Redis並不是簡單的將資料放入記憶體中。

                                     

記憶體分配演算法:

    預設採用jemalloc演算法:根據字串的大小分配了合適的的記憶體,因為redis採用自己的jemalloc演算法,能夠提高效率,但是並不會實時的清理記憶體碎片,因此如果你多次的修改字串的大小,那麼就會造成碎片的回收不妥。

    jemalloc有三個分配機制,分別為small,large