我有一个包含20个字段的对象A,我有100万个对象A的实例。
我想将它们存储在Redis中,每次都要检索超过100个实例。
现在,我有两个解决方案
SET key json
HGETALL key
调用管道,这将非常慢。所以我想知道我是否可以通过使用哈希来提高速度? 答案 0 :(得分:1)
这取决于一些事情:
存储序列化对象将占用更多空间,因为您将所有额外的特定于语言的信息与原始数据一起存储。如果您缺少RAM或必须存储大量对象,那么最好将所有这些数据存储在哈希中。由于你有100万行,你可能会通过使用哈希来节省相当多的空间。
我最近遇到了一个非常类似的问题。起初我尝试将序列化对象存储在Redis DB中,但是我必须存储超过500万个对象,每个对象包含许多我不需要存储在DB中的多余数据。这导致数据库大小膨胀,浪费了大量的RAM。
您的要求可能与我的要求有所不同,因此最好自己进行基准测试。尝试序列化对象并查看结果有多大。将其与键的总和大小进行比较,并比较两者之间的大小差异。如果序列化对象不是更大,那么最好只序列化。记住,反序列化不是一个可以忽略不计的操作,这也是很好的。
答案 1 :(得分:1)
字符串和散列是非常不同的数据类型,两者都有优点和缺点。在你暴露的情况下,你错过了一些非常重要的事情;例如:
仅根据性能做出决定并不是一个好主意,您可能会遗漏其他一些重要方面,例如完整性,可伸缩性和可维护性。