Redis 數據結構 之 SDS

SDS(simple dynamic string),簡單動態字符串。s同時它被稱為 Hacking String。hack 的地方就在 sds 保存了字符串的長度以及剩餘空間。sds 的實現在 sds.c 中。

C語言字符串使用長度為n+1的字符數組來表示長度為n的字符串,並且字符數組的最後一個元素總是空字符’\0’,這樣的方式存儲,時存在安全隱患的,並且它不能滿足效率方面的需求。

因此Redis沒有使用C原生的string而是自己構建了SDS。在Redis里,C語言字符串只用於一些無須對字符串值進行修改的地方,比如:日誌。

在Redis中,包含字符串值的鍵值對都是使用SDS實現的,除此之外,SDS還被用於AOF緩衝區、客戶端狀態的輸入緩衝區。

SDS定義

struct sdshdr{
     //字節數組
     char buf[]; 
     //buf數組中已使用字節數量
     int len;
     //buf數組中未使用字節數量
     int free;
}

如上圖所示,len表示該SDS保存了一個6字節長度(不包含結束符)的字符串,free表示該SDS還有6個字節的未使用空間,buf是一個char類型的數組 ,保存了該SDS所存儲的字符串值。

高效

相比C語言字符串,使獲取字符串長度時間複雜度降為O(1)而C原生的獲取長度為O(N) 遍歷整個數組。

安全

同時SDS杜絕緩衝區溢出,不會像C那樣造成數組數據不安全,絕對不會越界。

當需要對SDS進行修改時,API會先檢查SDS當前剩餘空間是否滿足修改之後所需的空間,如果不滿足的話API會自動將SDS的空間擴展至足夠用的空間然後才進行下一步操作,所以SDS不會出現緩衝區溢出問題。

減少內存分配

C語言字原生符串底層是使用一個n+1個字符長度的char類型數據實現的,所以每次增長或縮短一個原生字符串,程序都要對這個字符串數組進行一次內存重分配操作:

同時因為內存重分配涉及複雜的算法,並且可能需要執行系統調用,所以它通常是一個比較耗時的操作。Redis經常被用於速度要求嚴苛、數據被頻繁修改的場合,如果每次修改字符串都需要執行一次內存重分配的話,那麼對於性能會造成很大影響。

SDS 在分配了內存之後(往往空間會存在盈餘,也就是空間的預分配),然後自己通過len 和 free 來維護已使用的和未使用的內存,不再依賴系統來重新劃分,這樣能有效的提升性能。

空間預分配

用於字符串增長操作,當字符串增長時,程序會先檢查需不需要對SDS空間進行擴展,如果需要擴展,程序不僅會為SDS分配修改所必要的空間,還會為SDS分配額外的未使用空間,額外分配的未使用空間公式如下:

SDS空間 < 1MB

如果對SDS修改之後,SDS的長度(修改之後len屬性的值)小於1MB,那麼則分配和len屬性同樣大小的未使用空間,這時SDS的len屬性和free屬性的值相同。如:如果修改之後SDS的len將變為10字節,那麼程序也會分配10字節的未使用空間,SDS的buf數組實際長度變為10 + 10 + 1 = 21(額外一個字節用於保存結束符\n)

SDS空間 > 1MB

如果對SDS修改之後,SDS的長度大於等於1MB,那麼程序會分配1MB的未使用空間。如:修改之後的len將變為10MB,那麼程序會分配1MB的未使用空間,SDS的bug數組長度為10MB + 1MB + 1byte

SDS空間 > 512MB

Game over~ 報錯!

惰性空間釋放

用於優化SDS的字符串收縮操作,當字符串收縮時,程序不會立即執行內存重分配來回收收縮后內存多出來的空間,而是使用free屬性記錄下來,以備將來使用。

通過空間預分配,Redis可以減少連續執行字符串增長操作所需的內存重分配次數,通過惰性空間釋放,SDS避免了縮短字符串時所需的內存重分配操作,併為將來由可能的增長操作提供了優化。

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※超省錢租車方案

※別再煩惱如何寫文案,掌握八大原則!

※回頭車貨運收費標準

※教你寫出一流的銷售文案?

FB行銷專家,教你從零開始的技巧

聚甘新

改變飲食減少水足跡 研究:吃素能省55%用水

摘錄自2018年9月11日中央社倫敦報導

最新研究指出,奉行較健康的飲食習慣可減少個人水足跡(water footprint),降低肉類攝取量可節省至少10%用水量,吃素更能減少多達55%用水量。

英國廣播公司(BBC)報導,這項在英國、法國和德國進行的研究,刊登於「自然永續」(Nature Sustainability)期刊。

研究人員表示,轉向健康飲食是個「雙贏局面」,不僅能讓身體更健康,且可用更少的水資源來生產食物。飼養牲畜耗費大量用水,生產油類、糖類及脂肪也需要大量水資源,但種植水果和蔬菜較省水。

但這項研究承認,鼓勵民眾改變飲食習慣並不容易,需要採取一連串干預措施,例如向不健康食品課稅和印製更清楚的食品標示。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※帶您來了解什麼是 USB CONNECTOR  ?

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※教你寫出一流的銷售文案?

聚甘新

【巴塞爾公約】嚴控全球塑膠垃圾轉移,發展中國家齊說「YES」

轉載自塑料解毒;翻譯:許冰;校對:毛達

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※為什麼 USB CONNECTOR 是電子產業重要的元件?

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

※台北網頁設計公司全省服務真心推薦

※想知道最厲害的網頁設計公司“嚨底家”!

※推薦評價好的iphone維修中心

聚甘新

「大家都累了」 美中仍保守 曼谷氣候談判陷泥沼

環境資訊中心綜合外電;姜唯 編譯;林大利 審校

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

台北網頁設計公司這麼多該如何選擇?

※智慧手機時代的來臨,RWD網頁設計為架站首選

※評比南投搬家公司費用收費行情懶人包大公開

※回頭車貨運收費標準

聚甘新

法國新任環境部長:不排除改組法電公司

摘錄自2018年9月10日法廣報導

法國世界報在本周一(10日)發布了一篇對法國新任環境部長德魯吉的專訪,其中數點提到了法國電力公司。

法電公司此前一直要求政府儘快落實法國境內新一座壓水反應堆核電廠的建造。對此,德魯吉不置可否,但強調「法電公司首先要證明,壓水反應堆核電廠是能用的,現在情況沒有體現出來壓水反應堆核電廠可用,沒人能保證現有的壓水反應堆核電廠什麼時候能啟動。法電公司還需要證明,壓水反應堆核電廠在費用方面具有競爭力。」德魯吉表示,無論如何,除了法國最老舊的,仍然運轉的核電廠費森海姆被關閉之外,要關閉的核電廠還有很多。法國將在今年10月底公布系列核電廠反應堆的關閉日程表。

對於辭職的前任環境部長於洛曾經提到的改組法電公司的可能性,新任環境部長德魯吉表示,已經對改組與否有了想法。他表示,法電公司不僅要進行能源轉型,而且要關注企業債務問題。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

南投搬家公司費用,距離,噸數怎麼算?達人教你簡易估價知識!

※教你寫出一流的銷售文案?

※超省錢租車方案

聚甘新

日本提議取消捕鯨禁令 保育組織斥危險又魯莽

摘錄自2018年9月10日自由時報報導

日本將在今年的國際捕鯨委員會(IWC)會議上,提議取消32年前制定的商業捕鯨禁令,希望建立「可持續捕鯨委員會」為商業捕鯨國家制定捕撈配額。保育人士憤怒表示,日本企圖公然推翻一直以來維持的狩獵禁令,若通過日本的提議,會導制危險的商業捕鯨行為。

《法新社》報導,為期一週的國際捕鯨委員會第67屆會議本週一(10日)在巴西弗洛里亞諾波利斯(Florianopolis)舉行,日本將提議廢止捕鯨禁令,稱小鬚鯨和其他鯨魚等總量已經恢復,建議IWC認同將恢復數量的物種訂定新的捕撈配額,建立「可持續捕鯨委員會」,替允許國民商業捕鯨的國家制定相關配額。日本還指出,實施捕鯨禁令不只是為了保育,也是為了再度開放捕鯨。

英國國際人道協會(HSI UK)也說,如果日本提案通過,將再次開放捕鯨季節,這會是幾十年來,最危險和魯莽企圖的商業捕鯨行為。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

※Google地圖已可更新顯示潭子電動車充電站設置地點!!

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※別再煩惱如何寫文案,掌握八大原則!

網頁設計最專業,超強功能平台可客製化

聚甘新

建立台灣建築節能經驗:政策循序漸進  技術在地試驗

環境資訊中心特約記者 陳文姿報導

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

南投搬家公司費用需注意的眉眉角角,別等搬了再說!

※教你寫出一流的銷售文案?

聚甘新

美研究:種植水稻產生溫室氣體被低估 包括中國

摘錄自2018年9月12日新華網報導

美國《國家科學院學報》前(10)日刊載的一項研究顯示,如把一氧化二氮排放考慮在內,水稻種植對全球變暖的影響可能比此前估計水平高出近一倍。

然而,包括中國、美國、印度在內的多數水稻生産國,目前都沒有將與水稻種植有關的一氧化二氮排放計入向聯合國提交的國家溫室氣體排放清單中。

美國環境保護基金組織的研究稱,近年來,水資源短缺導致越來越多的地區採用間歇性淹水法種植水稻,但在分析稻田對氣候的影響時,間歇性淹水稻田釋放的高水平一氧化二氮此前並未被計算在內,導致水稻種植對全球變暖的影響被嚴重低估。

一氧化二氮,又稱氧化亞氮,是重要的長效溫室氣體。在20年到100年時段中,其捕獲大氣熱量的能力是甲烷的數倍。最新研究顯示,間歇性淹水稻田釋放的一氧化二氮水平高達持續性淹水稻田的30到45倍,後者釋放的主要溫室氣體是甲烷。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

※想知道最厲害的網頁設計公司“嚨底家”!

※別再煩惱如何寫文案,掌握八大原則!

※產品缺大量曝光嗎?你需要的是一流包裝設計!

聚甘新

WTO檢討 促台推動農產品貿易自由化

摘錄自2018年9月11日中央社布魯塞爾報導

經濟部次長王美花率團出席世界貿易組織(WTO)對台灣第4次貿易政策檢討會議,歐盟代表在會中讚台灣經濟基本面良好,但呼籲台灣加速制定殘留許可限制,推動農產品貿易自由化。

台灣第4次貿易政策檢討會議12日至14日在WTO瑞士日內瓦總部召開,由經濟部次長王美花率團與會,與會代表包括行政院經貿談判辦公室、外交部、農委會、財政部、金管會、經濟部工業局、智慧財產局及國際貿易局等單位。

根據經濟部發布新聞稿,王美花在會中說明台灣過去4年經貿政策,重申支持自由多邊貿易體系及WTO,表示將與會員合作改善WTO;也說明台灣正實行推動加入跨太平洋夥伴全面進步協定(CPTPP)、推動數位經濟及前瞻計畫等經貿政策,並以新南向政策強化與該地區連結。

此外,台灣正大力推動永續能源政策,目標在2025年達到再生能源占比20%目標,藉此鼓勵投資與創造就業,並承諾協助其他WTO開發中會員共同達到聯合國永續發展目標。

擔任與談人的歐盟駐WTO大使范亥克倫(Marc Vanheukelen)彙整22個會員國提出的400多項書面問題,主要關注議題包括簡化外人投資審查程序、食品安全應採用國際標準,並基於科學證據及簡化農藥殘留容許量的程序、農業進口稅率遠高於工業產品、履行農業境內支持通知義務、漁業補貼、擴大政府採購開放範圍、擴大對低度開發國家產品進口優惠。

范亥克倫強調,台灣應加速制訂殘留許可限制(MRL),推動農產品貿易自由化,以及推動人才培養與經濟永續發展。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※別再煩惱如何寫文案,掌握八大原則!

※教你寫出一流的銷售文案?

※超省錢租車方案

FB行銷專家,教你從零開始的技巧

聚甘新

MIT 認為核電不可或缺,小型模組式核反應爐為發展重點

摘錄自2018年9月12日科技新報美國報導

麻省理工能源研究計畫(MITEI)最新研究,若要在低成本與對社會影響低的情況下實現低碳未來,核能是不可或缺的元素之一,建議應捨棄傳統的大型電廠,發展成本低與裝置更靈活的小型模組式核反應爐。

先前美國核能管理委員會(NRC)也放行英商 NuScale Power 的模組式反應爐的第一階段審核,根據官網資料,該小型核反應爐大小 23×5 公尺,重量僅 700 公噸,熱容量達 160 MWt、可產生 50 MW 電力,其發電性能不差、體積更是遠比傳統的核反應爐還要小。

處於實驗室階段的第四代核電廠行波反應爐也屬於模組式設計,製造成本則比傳統核反應爐更加便宜,有別於 LWR 等前幾代核技術,行波反應爐不需要濃縮鈾,使用核廢料貧化鈾就可以運行,自產的核廢料也能回收利用。假如該技術成功跨出商業化門檻,核廢料問題將可大大減少。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※別再煩惱如何寫文案,掌握八大原則!

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

※超省錢租車方案

※教你寫出一流的銷售文案?

網頁設計最專業,超強功能平台可客製化

聚甘新