亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Redis教程(十四):內(nèi)存優(yōu)化介紹

 更新時間:2015年05月04日 08:45:27   投稿:junjie  
這篇文章主要介紹了Redis教程(十四):內(nèi)存優(yōu)化介紹,本文講解了特殊編碼、BIT和Byte級別的操作、盡可能使用Hash等內(nèi)容,需要的朋友可以參考下

一、特殊編碼:

    自從Redis 2.2之后,很多數(shù)據(jù)類型都可以通過特殊編碼的方式來進(jìn)行存儲空間的優(yōu)化。其中,Hash、List和由Integer組成的Sets都可以通過該方式來優(yōu)化存儲結(jié)構(gòu),以便占用更少的空間,在有些情況下,可以省去9/10的空間。
    這些特殊編碼對于Redis的使用而言是完全透明的,事實上,它只是CPU和內(nèi)存之間的一個交易而言。如果內(nèi)存使用率方面高一些,那么在操作數(shù)據(jù)時消耗的CPU自然要多一些,反之亦然。在Redis中提供了一組配置參數(shù)用于設(shè)置與特殊編碼相關(guān)的各種閾值,如:
 

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

    #如果Hash中字段的數(shù)量小于參數(shù)值,Redis將對該Key的Hash Value采用特殊編碼。
    hash-max-zipmap-entries 64
    #如果Hash中各個字段的最大長度不超過512字節(jié),Redis也將對該Key的Hash Value采用特殊編碼方式。
    hash-max-zipmap-value 512
    #下面兩個參數(shù)的含義基本等同于上面兩個和Hash相關(guān)的參數(shù),只是作用的對象類型為List。
    list-max-ziplist-entries 512
    list-max-ziplist-value 64
    #如果set中整型元素的數(shù)量不超過512時,Redis將會采用該特殊編碼。
    set-max-intset-entries 512
 

    倘若某個已經(jīng)被編碼的值再經(jīng)過修改之后超過了配置信息中的最大限制,那么Redis會自動將其轉(zhuǎn)換為正常編碼格式,這一操作是非??焖俚?,但是如果反過來操作,將一個正常編碼的較大值轉(zhuǎn)換為特殊編碼,Redis的建議是,在正式做之前最好先簡單測試一下轉(zhuǎn)換效率,因為這樣的轉(zhuǎn)換往往是非常低效的。
   
二、BIT和Byte級別的操作:

    從Redis 2.2開始,Redis提供了GETRANGE/SETRANGE/GETBIT/SETBIT四個用于字符串類型Key/Value的命令。通過這些命令,我們便可以像操作數(shù)組那樣來訪問String類型的值數(shù)據(jù)了。比如唯一標(biāo)識用戶身份的ID,可能僅僅是String值的其中一段子字符串。這樣就可以通過GETRANGE/SETRANGE命令來方便的提取。再有就是可以使用BITMAP來表示用戶的性別信息,如1表示male,0表示female。用這種方式來表示100,000,000個用戶的性別信息時,也僅僅占用12MB的存儲空間,與此同時,在通過SETBIT/GETBIT命令進(jìn)行數(shù)據(jù)遍歷也是非常高效的。
   
三、盡可能使用Hash:

    由于小的Hash類型數(shù)據(jù)占用的空間相對較少,因此我們在實際應(yīng)用時應(yīng)該盡可能的考慮使用Hash類型,比如用戶的注冊信息,這其中包括姓名、性別、email、年齡和口令等字段。我們當(dāng)然可以將這些信息以Key的形式進(jìn)行存儲,而用戶填寫的信息則以String Value的形式存儲。然而Redis則更為推薦以Hash的形式存儲,以上信息則以Field/Value的形式表示。
    現(xiàn)在我們就通過學(xué)習(xí)Redis的存儲機制來進(jìn)一步證明這一說法。在該篇博客的開始處已經(jīng)提到了特殊編碼機制,其中有兩個和Hash類型相關(guān)的配置參數(shù):hash-max-zipmap-entries和hash-max-zipmap-value。至于它們的作用范圍前面已經(jīng)給出,這里就不再過多的贅述了?,F(xiàn)在我們先假設(shè)存儲在Hash Value中的字段數(shù)量小于hash-max-zipmap-entries,而每個元素的長度又同時小于hash-max-zipmap-value。這樣每當(dāng)有新的Hash類型的Key/Value存儲時,Redis都會為Hash Value創(chuàng)建定長的空間,最大可預(yù)分配的字節(jié)數(shù)為:
    total_bytes = hash-max-zipmap-entries * hash-max-zipmap-value
    這樣一來,Hash中所有字段的位置已經(jīng)預(yù)留,并且可以像訪問數(shù)組那樣隨機的訪問Field/Value,他們之間的步長間隔為hash-max-zipmap-value。只有當(dāng)Hash Value中的字段數(shù)量或某一新元素的長度分別超過以上兩個參數(shù)值時,Redis才會考慮將他們以Hash Table的方式進(jìn)行重新存儲,否則將始終保持這種高效的存儲和訪問方式。不僅如此,由于每個Key都要存儲一些關(guān)聯(lián)的系統(tǒng)信息,如過期時間、LRU等,因此和String類型的Key/Value相比,Hash類型極大的減少了Key的數(shù)量(大部分的Key都以Hash字段的形式表示并存儲了),從而進(jìn)一步優(yōu)化了存儲空間的使用效率。

相關(guān)文章

  • 小白也能看懂的Redis遍歷鍵和數(shù)據(jù)庫管理詳解

    小白也能看懂的Redis遍歷鍵和數(shù)據(jù)庫管理詳解

    這篇文章主要為大家介紹了小白也能看懂的Redis遍歷鍵和數(shù)據(jù)庫管理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • 解決 Redis 數(shù)據(jù)傾斜、熱點等問題

    解決 Redis 數(shù)據(jù)傾斜、熱點等問題

    ?單臺機器的硬件配置有上限制約,一般我們會采用分布式架構(gòu)將多臺機器組成一個集群,這篇文章主要介紹了解決 Redis 數(shù)據(jù)傾斜、熱點等問題,需要的朋友可以參考下
    2022-12-12
  • Jedis操作Redis實現(xiàn)模擬驗證碼發(fā)送功能

    Jedis操作Redis實現(xiàn)模擬驗證碼發(fā)送功能

    Redis是一個著名的key-value存儲系統(tǒng),也是nosql中的最常見的一種,這篇文章主要給大家介紹Jedis操作Redis實現(xiàn)模擬驗證碼發(fā)送功能,感興趣的朋友一起看看吧
    2021-09-09
  • 使用Jedis線程池returnResource異常注意事項

    使用Jedis線程池returnResource異常注意事項

    這篇文章主要介紹了使用Jedis線程池returnResource異常注意事項,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-03-03
  • 詳解SSH框架和Redis的整合

    詳解SSH框架和Redis的整合

    本篇文章主要介紹了SSH框架和Redis的整合,詳細(xì)的介紹了Struts+Spring+Hibernate和Redis整合,有興趣的可以了解一下。
    2017-03-03
  • Redis keys命令的具體使用

    Redis keys命令的具體使用

    本文主要介紹了Redis keys命令的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Redis上實現(xiàn)分布式鎖以提高性能的方案研究

    Redis上實現(xiàn)分布式鎖以提高性能的方案研究

    這篇文章主要介紹了Redis上實現(xiàn)分布式鎖以提高性能的方案研究,其中重點需要理解異步算法與鎖的自動釋放,需要的朋友可以參考下
    2015-12-12
  • Redis總結(jié)筆記(一):安裝和常用命令

    Redis總結(jié)筆記(一):安裝和常用命令

    這篇文章主要介紹了Redis總結(jié)筆記(一):安裝和常用命令,本文著重總結(jié)了常用命令,如對value操作的命令、對String操作的命令、對List操作的命令、對Set操作的命令等,需要的朋友可以參考下
    2015-01-01
  • Redis 實現(xiàn)“附近的人”功能

    Redis 實現(xiàn)“附近的人”功能

    Redis基于geohash和有序集合提供了地理位置相關(guān)功能。這篇文章主要介紹了Redis 實現(xiàn)“附近的人”功能,需要的朋友可以參考下
    2019-11-11
  • Redis連接錯誤的情況總結(jié)分析

    Redis連接錯誤的情況總結(jié)分析

    這篇文章主要給大家總結(jié)介紹了關(guān)于Redis連接錯誤的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02

最新評論