redis二進制安全是什么意思?


 

二進制安全是指,在傳輸數據時,保證二進制數據的信息安全,也就是不被篡改、破譯等,如果被攻擊,能夠及時檢測出來。
二進制安全包含了密碼學的一些東西,比如加解密、簽名等。

舉個例子,你把數據11110000加密成10001000,然后傳給我,就是一種二進制安全的做法。


redis中的二進制安全:
二進制安全

C字符串中的字符必須符合某種編碼(比如ASCII),並且除了字符串的末尾之外,字符串里面不能包含空字符,否則最先被程序讀入的空字符將被誤認為是字符串結尾,這些限制使得C字符串只能保存文本數據,而不能保存像圖片、音頻、視頻、壓縮文件這樣的二進制數據。

舉個例子,如果有一種使用空字符來分割多個單詞的特殊數據格式,如圖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不僅可以保存文本數據,還可以保存任意格式的二進制數據。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM