redis中string型別的二進位制安全

2021-08-01 16:36:28 字數 910 閱讀 8104

二進位制安全是什麼意思?
二進位制安全是指,在傳輸資料時,保證二進位制資料的資訊保安,也就是不被篡改、破譯等,如果被攻擊,能夠及時檢測出來。

二進位制安全包含了密碼學的一些東西,比如加解密、簽名等。

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

redis中string型別的二進位制安全:

二進位制安全

舉個例子,如果有一種使用空字元來分割多個單詞的特殊資料格式,如圖所示,那麼這種格式就不能使用c字串來儲存,因為c字串所用的函式只會識別出其中的"redis",而忽略之後的"cluster"。

雖然資料庫一般用於儲存文字資料,但使用資料庫來儲存二進位制資料的場景也不少見,因此,為了確保redis可以適用於各種不同的   使用場景,sds的 api都是二進位制安全的(binary-safe),所有sds api都會以處理二進位制的方式來處理sds存放在buf陣列裡的資料,程式不會對其中的資料做任何限制、過濾、或者假設,資料在寫入時是什麼樣的,它被讀 取時就是什麼樣。

這也是我們將sds的buf屬性稱為位元組陣列的原因——redis不是用這個陣列來儲存字元,而是用它來儲存一系列二進位制資料。

例如,使用sds來儲存之前提到的特殊資料格式就沒有任何問題,因為sds使用len屬性的值而不是空字元來判斷字串是否結束,如圖所示。

通過使用二進位制安全的sds,而不是c字串,使得redis不僅可以儲存文字資料,還可以儲存任意格式的二進位制資料。

redis中string型別及其操作

新增乙個name guo的鍵值對 set name guo get name guo setnx name guo new integer 0 get name guo 原來的name有乙個對應的值,所以本次的修改不生效,返回0 設定key對應的value並且指定此鍵值的有效期 setex colo...

redis語法 String型別

127.0.0.1 6379 set k1 v1 ok127.0.0.1 6379 get k1 v1 127.0.0.1 6379 del k1 integer 1 127.0.0.1 6379 get k1 nil 127.0.0.1 6379 set k2 v2 ok integer 9 12...

Redis 中 String 型別的記憶體開銷比較大

如果我們有大量的資料需要來儲存,在選型資料型別我們就需要知道 string 的記憶體開銷是很大的 這裡我們來分析下使用乙個 string 型別需要用到的記憶體 redis 中的 string,使用的是簡單動態字串 dynamic strings,sds 來看下資料結構 struct sdshdr 如...