Redis教程


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,測試及效果演示,答疑互動。

資料獲取方式

關注+轉發後,私信關鍵詞 【架構】即可獲取!

重要的事情說三遍,轉發、轉發、轉發後再發私信,才可以拿到!

還有Java工程化、高性能及分佈式、高性能、高架構。性能調優、Spring,MyBatis,Netty源碼分析和大數據等多個知識點高級進階乾貨


分享到:


相關文章: