-->

Does Redis only allow string representation but no

2020-08-12 23:46发布

问题:

I am getting mixed answers on my research here.

  • Can someone verify that the Redis Server can only store representation of any numerical values?

  • For instance, if I use a Java client (Jedis) with a double type in lpush, do I need to convert it to the equivalent of a string type before sending to Redis?

  • Or is there a way to I can send over an actual numeric type like a double? If so, is there any example code on how to accomplish this?

Thanks

回答1:

Redis stores everything in string or in its string representation. Even functions like INCR work by first parsing it into INTEGER then performing the operation

Note: this is a string operation because Redis does not have a dedicated integer type. The string stored at the key is interpreted as a base-10 64 bit signed integer to execute the operation.

Redis stores integers in their integer representation, so for string values that actually hold an integer, there is no overhead for storing the string representation of the integer.

And w.r.t Jedis; looking at the source i don't think it supports anything else other than strings



回答2:

Double numbers could be stored as string if you're using JSON codecs, but it also could be stored in binary format used by Kryo, CBOR, MsgPack codecs which are supported by Redis based framework for Java - Redisson.



标签: java redis jedis