Redis 是否只允许字符串表示,而不允许数值

2022-09-03 14:24:09

我在这里得到了关于我的研究的混合答案。

  • 有人可以验证Redis服务器只能存储任何数值的表示形式吗?

  • 例如,如果我使用在 lpush 中使用双精度类型的 Java 客户端 (Jedis),在发送到 Redis 之前,我是否需要将其转换为字符串类型的等效类型?

  • 或者有没有办法发送一个实际的数字类型,如双精度?如果是这样,是否有任何关于如何实现此目的的示例代码?

谢谢


答案 1

Redis 将所有内容存储在字符串或其字符串表示形式中。即使是像 INCR 这样的函数,也可以通过首先将其解析为 INTEGER 然后执行操作来工作

注意:这是一个字符串操作,因为 Redis 没有专用的整数类型。存储在密钥处的字符串被解释为以 10 为基数的 64 位有符号整数以执行操作。

Redis 以整数表示形式存储整数,因此对于实际保存整数的字符串值,存储整数的字符串表示形式没有开销。

和w.r.t Jedis;查看源代码,我认为它不支持字符串以外的任何其他内容


答案 2

如果您使用的是JSON编解码器,则可以将双精度数字存储为字符串,但它也可以以Kryo,CBOR,MsgPack编解码器使用的二进制格式存储,这些编解码器由基于Redis的Java框架 - Redisson支持。


推荐