1、redis基本概念簡介

 1.什麼是redis

   Redis作爲一個open source key-value store,與傳統的k-v存儲開源方案相比,其value類型支持各種常見數據類型(如strings, hashes, lists, sets, sorted-sets, etc.),正因如此,其可被用於多種應用場景。

   特別需要說明的是:當需要處理的數據能被內存完全容納時,Redis才能發揮其優異的性能,即Redis works with an in-memory dataset。

         Redis支持數據持久化(persistence),以便Redis服務因各種原因重啓後,可以load之前已有數據,從而恢復服務狀態。用戶可根據實際使用情況選擇兩種持久化策略:

         1) RDB方式:dump內存數據庫至磁盤
         2) AOF方式:將每個寫操作記錄到command log文件中,以便server重啓時回放log以恢復數據狀態(類似於MySQL的binlog)
        Redis支持Master-Slave Replication,從庫以全鏡像方式同步主庫數據,以防系統故障。
        Redis目前還不支持集羣,不過支持集羣的版本已在作者開發計劃中(cluster目前有alpha版本,尚未發佈生產環境可用版本)。
        雖無官方的集羣實現,但業界主流做法是用Partitioning方式將數據集散列到不同的redis實例上,從而變相實現了對redis集羣的支持,redis官網的這裏對partitioning的實現思路做了描述並推薦了twitter開源的一個支持redis的proxy - twemproxy(該proxy最初是作爲memcached proxy開源的)

        有兩個基本概念需要區分:Redis Master-Slave Replication和Redis Cluster,前者在兩個庫之間實現數據全鏡像,後者則是將用戶數據散列到不同機器上,每個機器的Redis節點只hold一部分用戶數據。    
        個人感覺,兩種方法都可以起到單點故障容錯作用,只是實現方式及應用場合不同而已。
        Redis還可以被用作Message Queue,支持的指令集見這裏
        關於Redis的更多基礎介紹,可直接查看其官網文檔。

2. Redis Architecture
        關於redis的架構及實現細節,有很多資料可以參考,這裏推薦2篇:
         1) Redis作者antirez關於Redis設計哲學的說明:Redis Manifesto
         2) The architecture of REDIS

3. Redis Performance and Application
        Redis以其高性能聞名(全內存hold數據,典型的"空間換時間"),關於其性能的benchmarks,這裏給出2篇資料:
         1) Redis官方發佈的性能測試工具及測試結果
         2) TimYang: MemcacheDB/Tokyo Tyrant/Redis性能對比測試
       雖然redis在業界大熱,但也非包治百病的萬能藥。關於Redis的常見應用場合及注意事項,這裏推薦2篇資料:
        1) Common Web Use Cases Solved In Redis 
        2) TimYang: Redis幾個認識誤區
       需要說明的問題:
       關於性能,即使假定測試機器配置均相同,Redis的啓動配置不同也會對Redis性能指標產生影響(比如持久化策略的配置)。因此各種性能測試結果具有參考意義,但不可以生搬硬套。
       關於應用,不限於本文給出的資料,大家感興趣的話,可用"redis use case"或"redis application"等key words進行搜索。

4. Redis Installing
       Redis源碼無外部依賴,故編譯安裝非常方便,從官網下載最新穩定版的源碼後,解壓後make即可。
       編譯好的bin文件位於在源碼的src目錄下,均以redis-xxx命名。其中:
       可執行的2進制文件共有5個:
        a.redis-benchmark    # 性能測試工具
        b.redis-check-aof      # aof文件修復工具
        c.redis-check-dump  # rdb文件修復工具
        d.redis-cli                   # 命令行交互工具
        e.redis-server            # redis server
       conf文件兩個:
        a.redis.conf                # redis server的配置文件
        b.sentinel.conf           # redis sentinel配置文件,用於監控

        redis server完成編譯後,部署啓動實例前,需要對redis.conf中的配置項有較爲清楚的理解和合理的配置,否則可能會影響redis的性能或造成數據丟失。限於篇幅,redis的配置說明會在下篇筆記中詳細描述。


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