【发布时间】:2015-11-30 02:05:14
【问题描述】:
我在这里的研究得到了不同的答案。
有人可以验证 Redis 服务器是否只能存储任何数值的表示形式?
例如,如果我在 lpush 中使用具有 double 类型的 Java 客户端 (Jedis),是否需要在发送到 Redis 之前将其转换为等效的字符串类型?
或者有没有办法可以发送一个实际的数字类型,比如双精度数?如果是这样,是否有任何示例代码说明如何完成此操作?
谢谢
【问题讨论】:
我在这里的研究得到了不同的答案。
有人可以验证 Redis 服务器是否只能存储任何数值的表示形式?
例如,如果我在 lpush 中使用具有 double 类型的 Java 客户端 (Jedis),是否需要在发送到 Redis 之前将其转换为等效的字符串类型?
或者有没有办法可以发送一个实际的数字类型,比如双精度数?如果是这样,是否有任何示例代码说明如何完成此操作?
谢谢
【问题讨论】:
Redis 将所有内容存储在字符串或其字符串表示形式中。 甚至像 INCR 这样的函数也是通过首先将其解析为 INTEGER 然后执行操作来工作的
注意:这是一个字符串操作,因为 Redis 没有专用的整数类型。存储在密钥中的字符串被解释为以 10 为底的 64 位有符号整数以执行操作。
Redis 以整数表示形式存储整数,因此对于实际保存整数的字符串值,存储整数的字符串表示形式没有开销。
还有 w.r.t Jedis;查看源代码,我认为它不支持字符串以外的任何其他内容
【讨论】:
如果您使用 JSON 编解码器,双数可以存储为字符串,但也可以以 Kryo、CBOR、MsgPack 编解码器使用的二进制格式存储,这些编解码器受基于 Redis 的 Java 框架支持 - Redisson。
【讨论】: