二進位制安全
舉個例子,如果有一種使用空字元來分割多個單詞的特殊資料格式,如圖2-17所示,那麼這種格式就不能使用c字串來儲存,因為c字串所用的函式只會識別出其中的"redis",而忽略之後的"cluster"。
雖然資料庫一般用於儲存文字資料,但使用資料庫來儲存二進位制資料的場景也不少見,因此,為了確保redis可以適用於各種不同的使用場景,sds的api都是二進位制安全的(binary-safe),所有sds api都會以處理二進位制的方式來處理sds存放在buf陣列裡的資料,程式不會對其中的資料做任何限制、過濾、或者假設,資料在寫入時是什麼樣的,它被讀取時就是什麼樣。
這也是我們將sds的buf屬性稱為位元組陣列的原因——redis不是用這個陣列來儲存字元,而是用它來儲存一系列二進位制資料。
例如,使用sds來儲存之前提到的特殊資料格式就沒有任何問題,因為sds使用len屬性的值而不是空字元來判斷字串是否結束,如圖2-18所示。
通過使用二進位制安全的sds,而不是c字串,使得redis不僅可以儲存文字資料,還可以儲存任意格式的二進位制資料。
二進位制安全
1 二進位制安全 二進位制安全是指,在傳輸資料時,保證二進位制資料的資訊保安,也就是不被篡改 破譯等,如果被攻擊,能夠及時檢測出來。二進位制安全包含了密碼學的一些東西,比如加解密 簽名等。舉個例子,你把資料11110000加密成10001000,然後傳給我,就是一種二進位制安全的做法。php中二進位...
二進位制 二進位制起源
現代通訊技術的基礎是二進位制編碼。早在1865年麥克斯韋總結出麥克斯韋方程組之前,美國人摩斯 morse 於1837年發明了摩斯電碼和有線電報。有線電報的出現,具有劃時代的意義 它讓人類獲得了一種全新的資訊傳遞方式,這種方式 看不見 摸不著 聽不到 完全不同於以往的信件 旗語 號角 烽火,這也是二進...
揭秘redis二進位制安全
最近在看redis設計與實現,書中有一節是介紹 二進位制安全 剛剛看到這五個字,我是百思不得其解,經過了好長一段時間的研究才明白了 二進位制安全 在redis中是什麼意思。馬上揭秘 一 先說一下,為什麼會提到這個概念。這是因為c語言中的字串,存在乙個缺陷,如果字串中包含空字元,那麼程式在讀取字串的時...