鍍金池/ 教程/ 大數(shù)據(jù)/ 初探 Redis
Redis 數(shù)據(jù)淘汰機(jī)制
積分排行榜
小剖 Memcache
Redis 數(shù)據(jù)結(jié)構(gòu) intset
分布式鎖
從哪里開始讀起,怎么讀
Redis 數(shù)據(jù)結(jié)構(gòu) dict
不在浮沙筑高臺
Redis 集群(上)
Redis 監(jiān)視器
源碼閱讀工具
Redis 日志和斷言
內(nèi)存數(shù)據(jù)管理
Redis 數(shù)據(jù)結(jié)構(gòu)綜述
源碼日志
Web 服務(wù)器存儲 session
消息中間件
Redis 與 Lua 腳本
什么樣的源代碼適合閱讀
Redis 數(shù)據(jù)結(jié)構(gòu) sds
Memcached slab 分配策略
訂閱發(fā)布機(jī)制
Redis 是如何提供服務(wù)的
Redis 事務(wù)機(jī)制
Redis 集群(下)
主從復(fù)制
Redis 應(yīng)用
RDB 持久化策略
Redis 數(shù)據(jù)遷移
Redis 事件驅(qū)動詳解
初探 Redis
Redis 與 Memcache
AOF 持久化策略
Redis 數(shù)據(jù)結(jié)構(gòu) redisOb
作者簡介
Redis 數(shù)據(jù)結(jié)構(gòu) ziplist
Redis 數(shù)據(jù)結(jié)構(gòu) skiplist
Redis 哨兵機(jī)制

初探 Redis

大學(xué)的時候我們都學(xué)過一種數(shù)據(jù)結(jié)構(gòu)——哈希表,查詢效率非常高,復(fù)雜度為 O(1),通常關(guān)注查詢性能的地方都會用到這個東西。

http://wiki.jikexueyuan.com/project/redis/images/redis.png" alt="" />

緩存系統(tǒng),就是一個哈希表。只是通常哈希表的場景都是在本機(jī),把哈希表放到遠(yuǎn)程的機(jī)器上,本機(jī)通過網(wǎng)絡(luò)訪問(增刪查改)哈希表,就成了現(xiàn)在的緩存系統(tǒng)了。

我們還可以嘗試強(qiáng)化這個哈希表,比如支持存儲各種類型的數(shù)據(jù);存儲有價值數(shù)據(jù)的哈希表時,需要定時備份這個哈希表;訪問的頻率太大了,需要將數(shù)據(jù)分散到多個遠(yuǎn)程的哈希表中;遠(yuǎn)程的哈希表節(jié)點(diǎn)多了,又該如何管理他們等等。

所以緩存系統(tǒng)只是哈希表的一種延伸,它只是一種數(shù)據(jù)結(jié)構(gòu)的應(yīng)用。同樣,Redis 也是。

這一章帶大家大概瀏覽一下 Redis。

Redis 在緩存系統(tǒng)所處的位置

通常,在系統(tǒng)中,我們會把數(shù)據(jù)交由數(shù)據(jù)庫來存儲,但傳統(tǒng)的數(shù)據(jù)庫增刪查改的性能較差,且比較復(fù)雜。根據(jù) 80/20 法則,百分之八十的業(yè)務(wù)訪問集中在百分之二十的數(shù)據(jù)上。是否可以有一個存在于物理內(nèi)存中的數(shù)據(jù)中間層,來緩存一些常用的數(shù)據(jù),解決傳統(tǒng)數(shù)據(jù)庫數(shù)據(jù)讀寫性能問題。常用的數(shù)據(jù)都存儲在內(nèi)存中,讀寫性能非??捎^。

http://wiki.jikexueyuan.com/project/redis/images/redis1.png" alt="" />

這種思維在計算機(jī)中很常見,之前學(xué)習(xí)計算機(jī)系統(tǒng)的時候就有見過這張圖:越往上層的存儲設(shè)備,存儲的速度就會更快。諸如,Redis, Memcache 是將可訪問的數(shù)據(jù)存儲在內(nèi)存中,可見它們可以彌補(bǔ)傳統(tǒng)數(shù)據(jù)庫的不足。

http://wiki.jikexueyuan.com/project/redis/images/redis2.png" alt="" />

包括 Redis/Memcache 這樣的 key-value 內(nèi)存存儲系統(tǒng),非常適合于讀多寫少的業(yè)務(wù)場景,而 Redis 是一個基于多種數(shù)據(jù)結(jié)構(gòu)的內(nèi)存存儲系統(tǒng),讓緩存系統(tǒng)更加好玩。