Redis教程

redis是什麼?
Redis是一個開源的使用ANSI C語言編寫、支援網路、可基於記憶體亦可持久化的日誌型、Key-Value資料庫,並提供多種語言的API。和Memcached類似,它支援儲存的value型別相對更多,包括string(字串)、list(連結串列)、set(集合)、zset(sorted set --有序集合)和hash(雜湊型別)。這些資料型別都支援push/pop、add/remove及取交集並集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎上,redis支援各種不同方式的排序。與memcached一樣,為了保證效率,資料都是快取在記憶體中。區別的是redis會週期性的把更新的資料寫入磁碟或者把修改操作寫入追加的記錄檔案,並且在此基礎上實現了master-slave(主從)同步。
redis的出現,很大程度補償了memcached這類key/value儲存的不足,在部分場合可以對關係資料庫起到很好的補充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客戶端,使用很方便。
Redis支援主從同步。資料可以從主伺服器向任意數量的從伺服器上同步,從伺服器可以是關聯其他從伺服器的主伺服器。這使得Redis可執行單層樹複製。存檔可以有意無意的對資料進行寫操作。由於完全實現了釋出/訂閱機制,使得從資料庫在任何地方同步樹時,可訂閱一個頻道並接收主伺服器完整的訊息釋出記錄。同步對讀取操作的可擴充套件性和資料冗餘很有幫助。
redis效能
下面是官方的bench-mark資料:
測試完成了50個併發執行100000個請求。
設定和獲取的值是一個256位元組字串。
Linux box是執行Linux 2.6,這是X3320 Xeon 2.5 ghz。
文字執行使用loopback介面(127.0.0.1)。
結果:讀的速度是110000次/s,寫的速度是81000次/s 。
redis儲存
redis使用了兩種檔案格式:全量資料和增量請求。
全量資料格式是把記憶體中的資料寫入磁碟,便於下次讀取檔案進行載入;
增量請求檔案則是把記憶體中的資料序列化為操作請求,用於讀取檔案進行replay得到資料,序列化的操作包括SET、RPUSH、SADD、ZADD。
redis的儲存分為記憶體儲存、磁碟儲存和log檔案三部分,配置檔案中有三個引數對其進行配置。
save seconds updates,save配置,指出在多長時間內,有多少次更新操作,就將資料同步到資料檔案。這個可以多個條件配合,比如預設配置檔案中的設定,就設定了三個條件。
appendonly yes/no ,appendonly配置,指出是否在每次更新操作後進行日誌記錄,如果不開啟,可能會在斷電時導致一段時間內的資料丟失。因為redis本身同步資料檔案是按上面的save條件來同步的,所以有的資料會在一段時間內只存在於記憶體中。
appendfsync no/always/everysec ,appendfsync配置,no表示等作業系統進行資料快取同步到磁碟,always表示每次更新操作後手動呼叫fsync()將資料寫到磁碟,everysec表示每秒同步一次。
視訊教程
Redis技能進化 海量併發下保障核心資料安全
內容:
1.論鎖的重要性;
2.深入淺出Java併發程式設計與鎖;
3.鎖技能升級,詳解分散式鎖;
4.驚喜來了,Redis學習路線圖;
5.手把手帶你實現redis分散式鎖;
6.未來一年你要學什麼?
今日課題:Redis快取效能深度優化~我是這樣做的
內容:
1,Redis從小白到高手只要2小時;
2,偽造Redis服務端學習底層協議實戰;
3,Redis存取速度快的真實原因(面試必問);
4,手寫Redis客戶端實戰;
5,將你的系統改成Redis快取系統實戰;
6,Redis效能之坑及優化實戰;
7,測試及效果演示,答疑互動。
資料獲取地址: ofollow,noindex">資料