1. 程式人生 > 實用技巧 >關於redis的type和object encoding

關於redis的type和object encoding

redis 的value型別有5種:

=================================我是分隔符=====================================

首先看一個例子:

mset是string分組下的,也就是說通過mset的value值,都是string型別。

通過type命令可以看到資料的型別,發現k1和k2都為string型別。

使用object encoding檢視k1和k2的編碼方式,k1為str,k2為int。既然redis的5種資料型別沒有int,那麼為什麼object encoding返回的資料型別有Int呢?

官網對於這個命令的解釋如下圖,也就是說object encoding 返回的是值的內部表示形式的型別。

如果object encoding的值為int,是可以進行一些計算操作的,這樣是有好處,在某些情況下會規避一些錯誤。如下圖:

incr:自增一

incrby:指定步長的自增

decr:自減一

decrby:指定步長的自減

incrbyfloat:指定浮點型步長的自增

還有一個比較有意思的現象:當字串長度達到一定長度時,內部從字串的儲存轉為行級儲存。

補充一點:redis是二進位制安全的,redis的資料儲存和讀取都是通過位元組流的形式。在多語言的環境下,更安全。同時也要求了寫入和讀取的編碼解碼方式要一致。