redis組內分享_第1頁
redis組內分享_第2頁
redis組內分享_第3頁
redis組內分享_第4頁
redis組內分享_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、Redis知識分享By 鐘楊Redis簡介 Redis 是完全開源免費的,遵守BSD協(xié)議,是一個高性能的key-value數據庫。 Redis 與其他 key - value 緩存產品有以下三個特點:1. Redis支持數據的持久化,可以將內存中的數據保持在磁盤中,重啟的時候可以再次加載進行使用。2. Redis不僅僅支持簡單的key-value類型的數據,同時還提供list,set,zset,hash等數據結構的存儲。3. Redis支持數據的備份,即master-slave模式的數據備份。 Redis參考教程地址:http:/ 優(yōu)勢優(yōu)勢 性能極高 Redis能讀的速度是110000次/s,

2、寫的速度是81000次/s 。 豐富的數據類型 Redis支持二進制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 數據類型操作。 原子 Redis的所有操作都是原子性的,同時Redis還支持對幾個操作全并后的原子性執(zhí)行。 豐富的特性 Redis還支持 publish/subscribe, 通知, key 過期等等特性。Redis常見命令 參考W3C school之類的地址: http:/ redis-server:Redis服務器的啟動程序。 redis-server redis.config redis-cli:Redis命令行操作工具。當然

3、,你也可以用telnet根據其純文本協(xié)議來操作。 redis-cli p 6379 redis-benchmark:Redis性能測試工具,測試Redis在你的系統(tǒng)及你的配置下的讀寫性能。 redis-stat:Redis狀態(tài)檢測工具,可以檢測Redis當前狀態(tài)參數及延遲狀況。Redis 數據類型數據類型 string(字符串) hash(哈希) list(列表) set(集合) zset(sorted set:有序集合)。String(字符串字符串)string是redis最基本的類型,你可以理解成與Memcached一模一樣的類型,一個key對應一個value。string類型是二進制安全

4、的。意思是redis的string可以包含任何數據。比如jpg圖片或者序列化的對象 。string類型是Redis最基本的數據類型,一個鍵最大能存儲512MB。Hash(哈希哈希)Redis hash 是一個鍵值對集合。Redis hash是一個string類型的field和value的映射表,hash特別適合用于存儲對象。Redis配置文件解析 請參見redis安裝目錄的redis.conf; 網絡鏈接:http:/ 鏈接文件。Redis的持久化 redis目前兩種方式來進行持久化:1. RDB的持久化2. AOF的持久化RDB的持久化這兩段的內容是指促發(fā)redis進行rdb存儲的方式和存儲

5、的名稱,當滿足其中的任何一個條件的時候,redis就會執(zhí)行save命令,將內存數據庫里面的信息持久化到磁盤上面去,命名為dump.rdb。rdb可以顯式的執(zhí)行,在redis命令行里面,執(zhí)行save或者bgsave即可執(zhí)行rdb的存儲,不同的是save是堵塞現(xiàn)有請求,而bgsave是后臺fork一份主進程進行保存,配置中的save執(zhí)行的bgsave命令。redis怎樣來觸發(fā)配置里面的save條件呢?在redis服務器上面,維持了一個dirty計數器和lastsave的屬性,dirty計數器記錄上一次save或者bgsave之后,redis數據庫有了多少次更改(插入、更新、刪除等操作),而last

6、save屬性是上一次服務器save或者bgsave執(zhí)行的時間戳,redis還有一個serverCron函數,每100毫秒就檢查下服務器的狀態(tài),如果滿足save配置里面的條件,則除非basave請求,進行持久化的存儲。AOF持久化 第一段代表開啟aof持久化,生成名稱為appendonly.aof的文件,第二部分代表每秒鐘執(zhí)行一次aof持久。aof還原數據理解起來很簡單,就是把數據按命令寫進去而已。 因為我們經常操作的可能都是同一條key,所以會存在aof出現(xiàn)很多重復數據的情況,導致無謂的體積增大,aof提供了一個bgrewriteaof命令,將原來的數據去掉重復值。rdb和aof結構分析Red

7、is主從復制 redis為了充分發(fā)揮自己的性能,在生產上經常使用一臺master主機和一臺slave或者幾臺slave機器來做讀寫分離,而這個里面的機制就是用了redis服務器間的復制。 對應兩臺服務器,可以直接用slaveof這個命令來設置主從,但是這個僅僅是測試用,一般是在服務器里面設置,修改redis.conf,配置slaveof master的ip master的port,再設置只讀屬性,建立兩臺機器的主從次序。老版老版復制復制 redis在老版復制功能用了同步(sync)和命令傳播(command propagate)兩個操作:1.同步操作將從服務器的數據庫狀態(tài)更新到主服務器所處的數

8、據庫狀態(tài)。2.命令傳播操作則用于在主服務器的數據庫狀態(tài)被修改后,主從服務器的數據庫狀態(tài)不一致時,讓他們保持一致。 SYNC命令解析:1.從服務器向主服務器發(fā)送sync命令。2.收到sync命令的主服務器執(zhí)行BGSAVE命令,后臺生成一個rdb文件,使用緩沖區(qū)記錄到現(xiàn)在開始執(zhí)行的所有寫命令。3.主服務器發(fā)送rdb文件給從服務器,從服務器接收并載入,將數據庫狀態(tài)更新至主服務器執(zhí)行bgsave命令時的數據庫狀態(tài)。4.主服務器將記錄在緩沖區(qū)里的寫命令發(fā)送給從服務器,從服務器執(zhí)行寫命令,使數據庫狀態(tài)更新與主服務器狀態(tài)一致。5.命令傳播解析: 當同步之后,主服務器狀態(tài)又發(fā)生改變的時候,同時發(fā)送一條命令讓從

9、服務器狀態(tài)更新,最終保持一致。6.老版的復制是在從服務器斷線重連后的sync效率很低,因為它默認從頭到尾整體復制,當數據量比較大的時候,會非常耗資源。新版新版復制復制 redis2.8開始之后,使用了PSYNC來代替SYNC,主要處理斷線重連的問題。PSYNC有完整重同步和部分重同步,其中完整重同步和SYNC幾乎一致。而部分重同步專門處理斷線后復制的情況,從服務器在斷線后重連到主服務器時,主服務器將這之間的寫命令發(fā)送給從服務器,這樣數據庫最后更新一致,節(jié)能環(huán)保高效。 部分重同步的實現(xiàn)方式部分重同步的實現(xiàn)方式:1. 記錄主服務器的復制偏移量和從服務器的復制偏移量。2. 命令傳播的時候還把主服務器命令寫到的復制積壓緩沖區(qū)。3. 記錄二者服務器的運行ID,如果一致就部分重同步,如果不一致則完整復制。PSYNC詳細

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論