2015-09-04 106 views
6

我在這裏得到了我的研究的混合答案。Redis是否只允許字符串表示,但不允許數字值

  • 有人可以驗證Redis服務器只能存儲任何數值的表示嗎?

  • 例如,如果我在lpush中使用雙重類型的Java客戶端(Jedis),在發送給Redis之前是否需要將它轉換爲字符串類型的等效項?

  • 或者是有辦法,我可以送過來一個實際的數字類型像雙?如果是這樣,是否有任何示例代碼如何實現這一目標?

感謝

回答

10

Redis的存儲在字符串或在其字符串表示的一切。就像首先解析成整數,然後執行操作

INCR工作 即使功能:這是一個字符串操作,因爲Redis的沒有專用的整數類型。存儲在密鑰中的字符串被解釋爲一個以10爲底的64位有符號整數來執行操作。

Redis的存儲在他們的整數表示整數,因此對於實際持有一個整數的字符串值,沒有任何開銷用於存儲整數的字符串表示。

而且w.r.t Jedis;查看源代碼我不認爲它支持除字符串以外的其他任何內容

+1

非常感謝您確認我的理論。我真的很看重這個! –

0

如果您使用的是JSON編解碼器,則雙數字可以存儲爲字符串,但也可以使用Kryo,CBOR,由Redis基於Java的框架支持的MsgPack編解碼器 - Redisson