国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Redis源碼解析(一):簡介
                               

     Redis 的作者,叫Salvatore Sanfilippo,來自意大利的西西里島,現(xiàn)在居住在卡塔尼亞。目前供職于Pivotal公司。他使用的網(wǎng)名是antirez。

    Redis是一個開源的使用ANSI C語言編寫、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、nosql、Key-Value數(shù)據(jù)庫,并提供多種語言的API。同時又可以把它看成一個緩存系統(tǒng)。它與Memcache的不同之處在于它是可持久化的而后者是完全基于內(nèi)存的。而且它支持更多的value類型,除了string外,還支持lists(鏈表)、sets(集合)和zsets(有序集合)幾種數(shù)據(jù)類型。

    redis命令參考(中文)地址:http://redis.readthedocs.org/en/latest/

    redis學(xué)習(xí)教程(英文)地址:http://labs.alcacoop.it/doku.php?id=articles:redis_land

    redis性能測試:http://www.cnblogs.com/lovecindywang/archive/2011/03/03/1969633.html

    Redis的持久化機(jī)制

    Redis由于支持非常豐富的內(nèi)存數(shù)據(jù)結(jié)構(gòu)類型,如何把這些復(fù)雜的內(nèi)存組織方式持久化到磁盤上是一個難題,所以Redis的持久化方式與傳統(tǒng)數(shù)據(jù)庫的方式有比較多的差別,Redis一共支持四種持久化方式,分別是:

  • 定時快照方式(snapshot)
  • 基于語句追加文件的方式(aof)
  • 虛擬內(nèi)存(vm)
  • Diskstore方式

     在設(shè)計思路上,前兩種是基于全部數(shù)據(jù)都在內(nèi)存中,即小數(shù)據(jù)量下提供磁盤落地功能,而后兩種方式則是作者在嘗試存儲數(shù)據(jù)超過物理內(nèi)存時,即大數(shù)據(jù)量的數(shù)據(jù)存儲,截止到本文,后兩種持久化方式仍然是在實驗階段,并且vm方式基本已經(jīng)被作者放棄,所以實際能在生產(chǎn)環(huán)境用的只有前兩種,換句話說Redis目前還只能作為小數(shù)據(jù)量存儲(全部數(shù)據(jù)能夠加載在內(nèi)存中),海量數(shù)據(jù)存儲方面并不是Redis所擅長的領(lǐng)域。下面分別介紹下這幾種持久化方式:

     定時快照方式(snapshot):

     該持久化方式實際是在Redis內(nèi)部一個定時器事件,每隔固定時間去檢查當(dāng)前數(shù)據(jù)發(fā)生的改變次數(shù)與時間是否滿足配置的持久化觸發(fā)的條件,如果滿足則通過操作系統(tǒng)fork調(diào)用來創(chuàng)建出一個子進(jìn)程,這個子進(jìn)程默認(rèn)會與父進(jìn)程共享相同的地址空間,這時就可以通過子進(jìn)程來遍歷整個內(nèi)存來進(jìn)行存儲操作,而主進(jìn)程則仍然可以提供服務(wù),當(dāng)有寫入時由操作系統(tǒng)按照內(nèi)存頁(page)為單位來進(jìn)行copy-on-write保證父子進(jìn)程之間不會互相影響。

該持久化的主要缺點是定時快照只是代表一段時間內(nèi)的內(nèi)存映像,所以系統(tǒng)重啟會丟失上次快照與重啟之間所有的數(shù)據(jù)。

     基于語句追加方式(aof):

     aof方式實際類似mysql的基于語句的binlog方式,即每條會使Redis內(nèi)存數(shù)據(jù)發(fā)生改變的命令都會追加到一個log文件中,也就是說這個log文件就是Redis的持久化數(shù)據(jù)。

aof的方式的主要缺點是追加log文件可能導(dǎo)致體積過大,當(dāng)系統(tǒng)重啟恢復(fù)數(shù)據(jù)時如果是aof的方式則加載數(shù)據(jù)會非常慢,幾十G的數(shù)據(jù)可能需要幾小時才能加載完,當(dāng)然這個耗時并不是因為磁盤文件讀取速度慢,而是由于讀取的所有命令都要在內(nèi)存中執(zhí)行一遍。另外由于每條命令都要寫log,所以使用aof的方式,Redis的讀寫性能也會有所下降。

     虛擬內(nèi)存方式:

     虛擬內(nèi)存方式是Redis來進(jìn)行用戶空間的數(shù)據(jù)換入換出的一個策略,此種方式在實現(xiàn)的效果上比較差,主要問題是代碼復(fù)雜,重啟慢,復(fù)制慢等等,目前已經(jīng)被作者放棄。

    diskstore方式:

diskstore方式是作者放棄了虛擬內(nèi)存方式后選擇的一種新的實現(xiàn)方式,也就是傳統(tǒng)的B-tree的方式,目前仍在實驗階段,后續(xù)是否可用我們可以拭目以待。

    

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Redis內(nèi)存使用優(yōu)化與存儲
一起看懂Redis兩種持久化方式的原理
redis持久化策略
七 redis學(xué)習(xí)筆記之持久化
Redis主從復(fù)制
redis持久化方法對比分析
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服