Redis 字符串

2018-08-02 11:48 更新

字符串

REDIS_STRING (字符串)是 Redis 使用得最為廣泛的數(shù)據(jù)類型,它除了是 SET 、 GET 等命令的操作對(duì)象之外,數(shù)據(jù)庫中的所有鍵,以及執(zhí)行命令時(shí)提供給 Redis 的參數(shù),都是用這種類型保存的。

字符串編碼

字符串類型分別使用 REDIS_ENCODING_INTREDIS_ENCODING_RAW 兩種編碼:

  • REDIS_ENCODING_INT 使用 long 類型來保存 long 類型值。
  • REDIS_ENCODING_RAW 則使用 sdshdr 結(jié)構(gòu)來保存 sds (也即是 char* )、 long long 、 doublelong double 類型值。

換句話來說,在 Redis 中,只有能表示為 long 類型的值,才會(huì)以整數(shù)的形式保存,其他類型的整數(shù)、小數(shù)和字符串,都是用 sdshdr 結(jié)構(gòu)來保存。

digraph redis_string {    node[shape=plaintext, style = filled];    edge [style = bold];    // type    REDIS_STRING [label= 

REDIS_ENCODING_RAW; REDIS_STRING -> REDIS_ENCODING_INT; REDIS_ENCODING_RAW -> sdshdr; REDIS_ENCODING_INT -> long; // datastruct 1 sdshdr [label="sdshdr"]; sds [label="sds/char*"]; long_long [label="long long"]; double [label="double"]; long_double [label="long double"]; sdshdr -> sds; sdshdr -> long_long; sdshdr -> double; sdshdr -> long_double; // datastruct 2 long [label="long"]; long_type [label="long"]; long -> long_type;}" />

編碼的選擇

新創(chuàng)建的字符串默認(rèn)使用 REDIS_ENCODING_RAW 編碼,在將字符串作為鍵或者值保存進(jìn)數(shù)據(jù)庫時(shí),程序會(huì)嘗試將字符串轉(zhuǎn)為 REDIS_ENCODING_INT 編碼。

字符串命令的實(shí)現(xiàn)

Redis 的字符串類型命令,基本上是通過包裝 sds 數(shù)據(jù)結(jié)構(gòu)的操作函數(shù)來實(shí)現(xiàn)的,沒有什么需要說明的地方。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)