27

假设我有一个对象(用户),它由一些属性(ID、姓名、Surename、年龄)组成。将这个对象存储在redis中哪种方式更好?

  • 将每个属性值存储在专用键中,例如 user:{id}:id, user:{id}:name, user:{id}:surename, user:{id}:age
  • 将整个 User 对象作为 JSON 字符串存储在一个键中,例如 user:{id}:json (键的值将类似于:{"ID": 123, "Name": "Johny", "Surename": “勇敢”,“年龄”:22})
4

3 回答 3

21

根据 两个来源,最佳解决方案可能是使用散列,因为在 JSON 作为键值的场景中使用专用键和长字符串时会消耗内存。

于 2011-03-09T23:16:46.757 回答
1

来自官方 Redis

尽可能使用哈希

小散列被编码在一个非常小的空间中

当你没有太多的领域时。

每次哈希超过指定的元素数量或元素大小时,它将被转换为真正的哈希表,并且内存节省将丢失。

于 2014-02-11T02:03:58.533 回答
0

从我的测试来看,使用 hash 占用的空间要小得多,但这是唯一的原因。如果您有大量数据,请考虑使用哈希。否则,您不妨使用 JSON,因为如果您愿意,它很容易序列化和反序列化为对象,并且通常可以处理。

于 2015-12-11T20:49:37.557 回答