在redis中存储对象属性

时间:2011-03-09 21:35:08

标签: json redis key-value-store

假设我有一个对象(User),它包含一些属性(ID,Name,Surename,Age)。哪种方式最好将此对象存储在redis中?

  • 将每个属性值存储在专用密钥中,例如user:{id}:id,user:{id}:name,user:{id}:surename,user:{id}:age
  • 将整个User对象作为JSON字符串存储在一个键中,例如user:{id}:json(键的值将是这样的:{“ID”:123,“Name”:“Johny”,“ Surename“:”Bravo“,”年龄“:22})

3 个答案:

答案 0 :(得分:20)

根据these two来源,最佳解决方案可能是使用hashes,因为在使用JSON作为键值的情况下使用专用键和长字符串时会占用内存。

答案 1 :(得分:1)

From official Redis

尽可能使用哈希

  

小哈希在非常小的空间中编码

当你没有多少字段时。

  

每次哈希都会超过元素数或元素大小   指定它将被转换为真正的哈希表和内存   储蓄将会丢失。

答案 2 :(得分:0)

从我的测试中使用hash需要更小的空间,但这是唯一的原因。如果你有很多数据考虑使用哈希。否则,您也可以使用JSON,因为如果您愿意,可以很容易地将其序列化并反序列化为对象,并且通常可以处理。