Redis: A persistent key-value database with built-in net interface written in ANSI-C for Posix systems. Redis是現在很火的高性能KV記憶體資料庫,支援豐富的資料類型,支援持久化、資料同步等DB特性。Redis是開源的,代碼量不大2W+,代碼風格和實作都很值得學習。在開源的時代,模仿好代碼估計是最快的學習方式。
推薦如下資料:
<a href="http://blog.nosqlfan.com/html/3139.html?ref=rediszt">Redis系統性介紹</a>
<a href="http://blog.nosqlfan.com/html/2395.html?ref=rediszt">一個很棒的Redis介紹PPT</a>
<a href="http://redis.io/documentation">Redis官方文檔</a>
<a href="http://www.searchtb.com/2011/05/redis-storage.html">Redis記憶體存儲結構分析</a>
<a href="http://redis.io/topics/protocol">協定規範(Protocol specification)</a>
<a href="http://pauladamsmith.com/articles/redis-under-the-hood.html#redis-under-the-hood">Redis: under the hood</a>
<a href="http://blog.nosqlfan.com/html/3813.html">解密Redis持久化</a>
<a href="http://redis.io/topics/replication">Replication</a>
zmalloc.h, zmalloc.c
ae.c ae_epoll.c ae_evport.c ae.h ae_kqueue.c ae_select.c
anet.h, anet.c, syncio.c(阻塞式讀寫)
adlist.h, adlist.c (通用雙向連結清單), ziplist.h, ziplist.c, zipmap.h, zipmap.c, intset.h, intset.c(基于連續記憶體的小資料存儲結構), sds.h, sds.c(Binary Safe字元串)
lzf_c.c lzf_d.c lzf.h lzfP.h
rio.h, rio.c
crc64.c, endianconv.h, endianconv.c(将大端資料轉成小端,性能考慮), memtest.c(記憶體測試工具), pqsort.h, pqsort.c(部分快排), rand.h, rand.c, sha1.c, sha1.h(開源的sha), util.c, util.h(字元串比對,字元串和整形數轉換)
Redis采用可讀可組合的文本協定。Redis采用統一的指令格式,基于統一的規範指令Redis天生具備解析和執行多條指令的能力,是以Redis非常容易支援:批量指令、事務、原子操作(腳本原子操作)等。
Redis的設計需要做各種權衡,每一種權衡都意味着不同的實作方案、資源、性能的折中。Redis不可能适合所有的使用場景,作為KV的記憶體資料庫,Redis做了很多針對性設計:高性能優先、高記憶體使用效率、多樣的資料結構(記憶體易實作)、單線程讀寫(CPU非瓶頸)、資料快照(RDB檔案)、可過期的資料,同時提供其他可配置的功能:AOF(日志)、可配置的小資料格式、主從Replication、嚴格記憶體限制或swap、LRU緩存、磁盤存儲等。
<a href="http://redis.io/topics/admin">Redis Administration</a>
<a href="http://redis.io/topics/faq">FAQ</a>
<a href="http://redis.io/topics/memory-optimization">memory-optimization</a>
<a href="http://blog.nosqlfan.com/html/3537.html">Redis資料彙總專題</a>
本文轉自 zhenjing 部落格園部落格,原文連結:http://www.cnblogs.com/zhenjing/archive/2012/11/15/redis_research.html ,如需轉載請自行聯系原作者