2016-04-27 51 views
0

在redis站点中,在“内存优化”中说小哈希使用的方式少于少数几个内存,所以最好存储少量字段的小哈希,而不是几个键,所以我想制作,例如,用户哈希和存储在字段中的用户作为JSON序列化数据,但我的哈希如何是真的很大的意义,我有很多领域。Redis - 如何存储我的数据?

将用户存储为具有大量字段或多个小哈希的单个哈希值是否更好?

我问这是因为在redis站点中它说“小”哈希比存储一些值的几个键更好,但我不知道它是否仍然适用于非常大的哈希。

回答

0

我会说你最好的解决方案是为每个用户创建一个密钥,或许由用户id命名并存储json数据。

我们试图每个用户存储为每个用户1个哈希值,然后字段每个用户的属性,但我们发现,我们从来没有真正使用的字段分别在大多数情况下,最需要的数据(HGETALL),所以切换到存储json - 这也有助于保存数据类型。

需要更多的细节,以了解您想要存储数据的内容以及如何真正提供更多建议。

+0

你是指用json作为用户散列值的一个散列字段吗? –

+0

我的意思是通过GET/SET使用标准密钥 – Salakar

+1

我同意这一点。哈希的另一个限制是你不能保持嵌套关系而不把嵌套对象转换成jsons(或其他序列化的字符串)以便放入哈希字段。这变得混乱和毫无意义,可能只是将整个序列化成json并使用字符串数据类型。 –

0

比方说,你有这样的用户:

{"ID": "344", "Name": "Blah", "Occupation": "Engineer", "Telephone": [ "550-33...", ...] } 

你会序列化JSON并将其存储为Redis的什么说的字符串。即你会使用“GET”和“SET”命令。

例如

SET "user:344" "<SERIALIZED> 

由于“用户”是您的主要对象之一,它不是一个小散列。

文档的要点是关于哈希会有少量元素。例如,假设在整个系统中有10种颜色,并且您希望将某些数据与每种颜色相关联。不要这样做:

color:blue -> DATA, color:white -> DATA 

这对你更好。

colors -> blue -> DATA 
colors -> while -> DATA