大學的時候我們都學過一種數據結構——哈希表,查詢效率非常高,復雜度為 O(1),通常關注查詢性能的地方都會用到這個東西。
http://wiki.jikexueyuan.com/project/redis/images/redis.png" alt="" />
緩存系統(tǒng),就是一個哈希表。只是通常哈希表的場景都是在本機,把哈希表放到遠程的機器上,本機通過網絡訪問(增刪查改)哈希表,就成了現在的緩存系統(tǒng)了。
我們還可以嘗試強化這個哈希表,比如支持存儲各種類型的數據;存儲有價值數據的哈希表時,需要定時備份這個哈希表;訪問的頻率太大了,需要將數據分散到多個遠程的哈希表中;遠程的哈希表節(jié)點多了,又該如何管理他們等等。
所以緩存系統(tǒng)只是哈希表的一種延伸,它只是一種數據結構的應用。同樣,Redis 也是。
這一章帶大家大概瀏覽一下 Redis。
通常,在系統(tǒng)中,我們會把數據交由數據庫來存儲,但傳統(tǒng)的數據庫增刪查改的性能較差,且比較復雜。根據 80/20 法則,百分之八十的業(yè)務訪問集中在百分之二十的數據上。是否可以有一個存在于物理內存中的數據中間層,來緩存一些常用的數據,解決傳統(tǒng)數據庫數據讀寫性能問題。常用的數據都存儲在內存中,讀寫性能非??捎^。
http://wiki.jikexueyuan.com/project/redis/images/redis1.png" alt="" />
這種思維在計算機中很常見,之前學習計算機系統(tǒng)的時候就有見過這張圖:越往上層的存儲設備,存儲的速度就會更快。諸如,Redis, Memcache 是將可訪問的數據存儲在內存中,可見它們可以彌補傳統(tǒng)數據庫的不足。
http://wiki.jikexueyuan.com/project/redis/images/redis2.png" alt="" />
包括 Redis/Memcache 這樣的 key-value 內存存儲系統(tǒng),非常適合于讀多寫少的業(yè)務場景,而 Redis 是一個基于多種數據結構的內存存儲系統(tǒng),讓緩存系統(tǒng)更加好玩。