我有3种类型的值。
Type1 - In millions
Type2 - In hundreds
Type3 - In tens
对于每种类型1,所有类型2都应由类型3处理。
我可以使用set。
Type1#Type3 = {Type2 values}
或
Type1#Type2 = {Type3 values}
如果我将Type3保留为键,则该设备将占用更多内存。
还是有更好的方法来存储这种类型的数据?
我评估了散列,该散列占用的内存比设置的多。我用ziplist压缩评估了哈希值。
有什么建议吗?
答案 0 :(得分:0)
如果您可以容忍分裂,这是另一种方法:
第一个HashMap,其键为type1值,值为:
分隔的与该type 1值链接的type2值列表
type1_a => type2_b:type2_c..
type1_b => type2_k:type2_d..
第二个HashMap,其键为type2值,而value为对应的type3值
type2_a => type3a
type3_b => type3b
for type2_key in firstHashMap.get(type1_key).split(':')
secondHasMap.get(type2_key)
此外,您可以查看Lua脚本以避免在客户端执行上述操作。