最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Redis教程(十一):虛擬內(nèi)存介紹

 更新時間:2015年04月30日 11:59:50   投稿:junjie  
這篇文章主要介紹了Redis教程(十一):虛擬內(nèi)存介紹,本文講解了虛擬內(nèi)存簡介、應(yīng)用場景和配置方法等內(nèi)容,需要的朋友可以參考下

一、簡介:

    和大多NoSQL數(shù)據(jù)庫一樣,Redis同樣遵循了Key/Value數(shù)據(jù)存儲模型。在有些情況下,Redis會將Keys/Values保存在內(nèi)存中以提高數(shù)據(jù)查詢和數(shù)據(jù)修改的效率,然而這樣的做法并非總是很好的選擇。鑒于此,我們可以將之進(jìn)一步優(yōu)化,即盡量在內(nèi)存中只保留Keys的數(shù)據(jù),這樣可以保證數(shù)據(jù)檢索的效率,而Values數(shù)據(jù)在很少使用的時候則可以被換出到磁盤。
    在實際的應(yīng)用中,大約只有10%的Keys屬于相對比較常用的鍵,這樣Redis就可以通過虛存將其余不常用的Keys和Values換出到磁盤上,而一旦這些被換出的Keys或Values需要被讀取時,Redis則將其再次讀回到主內(nèi)存中。

二、應(yīng)用場景:

    對于大多數(shù)數(shù)據(jù)庫而言,最為理想的運行方式就是將所有的數(shù)據(jù)都加載到內(nèi)存中,而之后的查詢操作則可以完全基于內(nèi)存數(shù)據(jù)完成。然而在現(xiàn)實中這樣的場景卻并不普遍,更多的情況則是只有部分?jǐn)?shù)據(jù)可以被加載到內(nèi)存中。
    在Redis中,有一個非常重要的概念,即keys一般不會被交換,所以如果你的數(shù)據(jù)庫中有大量的keys,其中每個key僅僅關(guān)聯(lián)很小的value,那么這種場景就不是非常適合使用虛擬內(nèi)存。如果恰恰相反,數(shù)據(jù)庫中只是包含少量的keys,而每一個key所關(guān)聯(lián)的value卻非常大,那么這種場景對于使用虛存就再合適不過了。
    在實際的應(yīng)用中,為了能讓虛存更為充分的發(fā)揮作用以幫助我們提高系統(tǒng)的運行效率,我們可以將帶有很多較小值的Keys合并為帶有少量較大值的Keys。其中最主要的方法就是將原有的Key/Value模式改為基于Hash的模式,這樣可以讓很多原來的Keys成為Hash中的屬性。

三、配置:

  1). 在配置文件中添加以下配置項,以使當(dāng)前Redis服務(wù)器在啟動時打開虛存功能。
    vm-enabled yes
   
    2). 在配置文件中設(shè)定Redis最大可用的虛存字節(jié)數(shù)。如果內(nèi)存中的數(shù)據(jù)大于該值,則有部分對象被換出到磁盤中,其中被換出對象所占用內(nèi)存將被釋放,直到已用內(nèi)存小于該值時才停止換出。
 

復(fù)制代碼 代碼如下:

    vm-max-memory (bytes)
 

    Redis的交換規(guī)則是盡量考慮"最老"的數(shù)據(jù),即最長時間沒有使用的數(shù)據(jù)將被換出。如果兩個對象的age相同,那么Value較大的數(shù)據(jù)將先被換出。需要注意的是,Redis不會將Keys交換到磁盤,因此如果僅僅keys的數(shù)據(jù)就已經(jīng)填滿了整個虛存,那么這種數(shù)據(jù)模型將不適合使用虛存機(jī)制,或者是將該值設(shè)置的更大,以容納整個Keys的數(shù)據(jù)。在實際的應(yīng)用,如果考慮使用Redis虛擬內(nèi)存,我們應(yīng)盡可能的分配更多的內(nèi)存交給Redis使用,以避免頻繁的換入換出。
   
    3). 在配置文件中設(shè)定頁的數(shù)量及每一頁所占用的字節(jié)數(shù)。為了將內(nèi)存中的數(shù)據(jù)傳送到磁盤上,我們需要使用交換文件。這些文件與數(shù)據(jù)持久性無關(guān),Redis會在退出前會將它們?nèi)縿h除。由于對交換文件的訪問方式大多為隨機(jī)訪問,因此建議將交換文件存儲在固態(tài)磁盤上,這樣可以大大提高系統(tǒng)的運行效率。
 
復(fù)制代碼 代碼如下:

    vm-pages 134217728
    vm-page-size 32   
 

    在上面的配置中,Redis將交換文件劃分為vm-pages個頁,其中每個頁所占用的字節(jié)為vm-page-size,那么Redis最終可用的交換文件大小為:vm-pages * vm-page-size。由于一個value可以存放在一個或多個頁上,但是一個頁不能持有多個value,鑒于此,我們在設(shè)置vm-page-size時需要充分考慮Redis的該特征。
 
    4). 在Redis的配置文件中有一個非常重要的配置參數(shù),即:
 
復(fù)制代碼 代碼如下:

    vm-max-threads 4
 

    該參數(shù)表示Redis在對交換文件執(zhí)行IO操作時所應(yīng)用的最大線程數(shù)量。通常而言,我們推薦該值等于主機(jī)的CPU cores。如果將該值設(shè)置為0,那么Redis在與交換文件進(jìn)行IO交互時,將以同步的方式執(zhí)行此操作。
    對于Redis而言,如果操作交換文件是以同步的方式進(jìn)行,那么當(dāng)某一客戶端正在訪問交換文件中的數(shù)據(jù)時,其它客戶端如果再試圖訪問交換文件中的數(shù)據(jù),該客戶端的請求就將被掛起,直到之前的操作結(jié)束為止。特別是在相對較慢或較忙的磁盤上讀取較大的數(shù)據(jù)值時,這種阻塞所帶來的影響就更為突兀了。然而同步操作也并非一無是處,事實上,從全局執(zhí)行效率視角來看,同步方式要好于異步方式,畢竟同步方式節(jié)省了線程切換、線程間同步,以及線程拉起等操作產(chǎn)生的額外開銷。特別是當(dāng)大部分頻繁使用的數(shù)據(jù)都可以直接從主內(nèi)存中讀取時,同步方式的表現(xiàn)將更為優(yōu)異。
    如果你的現(xiàn)實應(yīng)用恰恰相反,即有大量的換入換出操作,同時你的系統(tǒng)又有很多的cores,有鑒于此,你又不希望客戶端在訪問交換文件之前不得不阻塞一小段時間,如果確實是這樣,我想異步方式可能更適合于你的系統(tǒng)。
    至于最終選用哪種配置方式,最好的答案將來自于不斷的實驗和調(diào)優(yōu)。

相關(guān)文章

  • NestJS+Redis實現(xiàn)緩存步驟詳解

    NestJS+Redis實現(xiàn)緩存步驟詳解

    這篇文章主要介紹了NestJS+Redis實現(xiàn)緩存,本文分步驟給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • SpringBoot整合Redis入門之緩存數(shù)據(jù)的方法

    SpringBoot整合Redis入門之緩存數(shù)據(jù)的方法

    Redis是一個開源的使用ANSI C語言編寫、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value數(shù)據(jù)庫,并提供多種語言的API,下面通過本文給大家介紹下SpringBoot整合Redis入門之緩存數(shù)據(jù)的相關(guān)知識,感興趣的朋友一起看看吧
    2021-11-11
  • 基于Redis實現(xiàn)分布式鎖的方法(lua腳本版)

    基于Redis實現(xiàn)分布式鎖的方法(lua腳本版)

    這篇文章主要介紹了基于Redis實現(xiàn)分布式鎖的方法(lua腳本版),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-05-05
  • Windows下注冊Redis服務(wù)失敗的解決方案

    Windows下注冊Redis服務(wù)失敗的解決方案

    在Windows系統(tǒng)中,有時候我們需要將Redis作為一個服務(wù)運行,以便于在后臺長期運行并提供服務(wù),本篇技術(shù)博客文章將為你解答在Windows下注冊Redis服務(wù)失敗的一些常見問題,并提供相應(yīng)的解決方案,需要的朋友可以參考下
    2024-11-11
  • Redis實戰(zhàn)之商城購物車功能的實現(xiàn)代碼

    Redis實戰(zhàn)之商城購物車功能的實現(xiàn)代碼

    這篇文章主要介紹了Redis實戰(zhàn)之商城購物車功能的實現(xiàn)代碼,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • redis緩存數(shù)據(jù)庫中數(shù)據(jù)的方法

    redis緩存數(shù)據(jù)庫中數(shù)據(jù)的方法

    這篇文章主要為大家詳細(xì)介紹了redis緩存數(shù)據(jù)庫中數(shù)據(jù)的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • Redis實現(xiàn)UV統(tǒng)計的示例代碼

    Redis實現(xiàn)UV統(tǒng)計的示例代碼

    本文主要介紹了Redis實現(xiàn)UV統(tǒng)計的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • 基于redis.properties文件的配置及說明介紹

    基于redis.properties文件的配置及說明介紹

    今天小編就為大家分享一篇基于redis.properties文件的配置及說明介紹,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • 多維度深入分析Redis的5種基本數(shù)據(jù)結(jié)構(gòu)

    多維度深入分析Redis的5種基本數(shù)據(jù)結(jié)構(gòu)

    此篇文章主要對Redis的5種基本數(shù)據(jù)類型,即字符串(String)、列表(List)、散列(Hash)、集合(Set)、有序集合(Sorted?Set),從使用場景和底層結(jié)構(gòu)出發(fā),進(jìn)行多維度深入分析。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-11-11
  • redis 用scan指令 代替keys指令(詳解)

    redis 用scan指令 代替keys指令(詳解)

    下面小編就為大家分享一篇redis 用scan指令 代替keys指令詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12

最新評論

绵竹市| 澳门| 禄劝| 靖宇县| 留坝县| 祁门县| 苍梧县| 屏山县| 含山县| 南华县| 南投县| 宜良县| 正宁县| 青冈县| 改则县| 龙海市| 武隆县| 德江县| 九龙县| 施秉县| 嘉禾县| 湛江市| 吉安市| 象州县| 鄢陵县| 宿迁市| 鲜城| 铜川市| 炎陵县| 德兴市| 梅河口市| 京山县| 旅游| 商洛市| 普陀区| 沽源县| 府谷县| 崇仁县| 调兵山市| 育儿| 湘潭市|