是不是将所有数据作为字符串存储在内存使用方面的开销?

时间:2018-04-14 09:38:50

标签: redis heap-memory

  1. 在内存消耗方面,不仅仅存储字符串作为数据类型需要很大的开销吗? 例如:存储" 304.2"在任何应用程序中都比将304.2存储为float / double更昂贵。
  2. 即使内部值确实存储为数值,也要委托每个客户负责解析"字符串不是效率低下的另一个来源吗?
  3. 我开始使用redis时非常兴奋,但我的用法是缓存一个关键的x值结构,如" string" x"加倍[]"。即使它与磁盘相比可能会有所回报,但这两点确实让我无法采用这项技术。 我希望被证明是错的,这就是我提出这个问题的原因。

    谢谢,

2 个答案:

答案 0 :(得分:0)

对于第1点:你不能将304.2存储为float / double;你只能存储一个近似的近似值。要存储它,您需要例如专用的十进制类型,或更一般的有理类型。或者是一个字符串。

对于第2点:

  

RESP is a compromise between the following things:

     
      
  • 易于实施。
  •   
  • 快速解析。
  •   
  • 人类可读。
  •   

人类可读意味着无论数字如何在内部存储,它们仍将作为字符串发送,客户端必须解析它们。

答案 1 :(得分:0)

毕竟我选择了Infinispan,它给了我API正在寻找的东西。选择解决方案的优点是将缓存称为通用键x值并发映射的实际能力。缺点:就开箱即用的客户端支持的编程语言而言可能不太灵活,即使你总是可以使用google protobuff。