根据用例的不同,选择hashoverstring有很多好处和一些缺点。如果您要选择散列,最好将您的 json 对象设计为散列字段和值,例如;
127.0.0.1:6379> hset user:1 ssn 10101010101 name john surname wick date 2020-02-02 location continental
(integer) 5
127.0.0.1:6379> hgetall user:1
1) "ssn"
2) "10101010101"
3) "name"
4) "john"
5) "surname"
6) "wick"
7) "date"
8) "2020-02-02"
9) "location"
10) "continental"
Run Code Online (Sandbox Code Playgroud)
hash当您进行适当的数据建模时,以下是过度字符串的好处。
RAM 速度和内存带宽对于全局性能似乎不太重要,尤其是对于小对象。对于大对象(> 10 KB),它可能会变得很明显。
散列、列表、仅由整数组成的集合和排序集合,当小于给定的元素数量且达到最大元素大小时,以非常高效的方式进行编码,使用最多 10 倍的内存(5使用的时间更少的内存是平均节省)。
另一方面,取决于您的用例;
ziplist 不是免费的,它是内存和 CPU 之间的权衡。EXPIRE它们,但在散列中,只有顶级键可以与所有值一起过期。