在redis站点中,在“内存优化”中说小哈希使用的方式少于少数几个内存,所以最好存储少量字段的小哈希,而不是几个键,所以我想制作,例如,用户哈希和存储在字段中的用户作为JSON序列化数据,但我的哈希如何是真的很大的意义,我有很多领域。Redis - 如何存储我的数据?
将用户存储为具有大量字段或多个小哈希的单个哈希值是否更好?
我问这是因为在redis站点中它说“小”哈希比存储一些值的几个键更好,但我不知道它是否仍然适用于非常大的哈希。
在redis站点中,在“内存优化”中说小哈希使用的方式少于少数几个内存,所以最好存储少量字段的小哈希,而不是几个键,所以我想制作,例如,用户哈希和存储在字段中的用户作为JSON序列化数据,但我的哈希如何是真的很大的意义,我有很多领域。Redis - 如何存储我的数据?
将用户存储为具有大量字段或多个小哈希的单个哈希值是否更好?
我问这是因为在redis站点中它说“小”哈希比存储一些值的几个键更好,但我不知道它是否仍然适用于非常大的哈希。
我会说你最好的解决方案是为每个用户创建一个密钥,或许由用户id
命名并存储json数据。
我们试图每个用户存储为每个用户1个哈希值,然后字段每个用户的属性,但我们发现,我们从来没有真正使用的字段分别在大多数情况下,最需要的数据(HGETALL
),所以切换到存储json - 这也有助于保存数据类型。
需要更多的细节,以了解您想要存储数据的内容以及如何真正提供更多建议。
比方说,你有这样的用户:
{"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
你是指用json作为用户散列值的一个散列字段吗? –
我的意思是通过GET/SET使用标准密钥 – Salakar
我同意这一点。哈希的另一个限制是你不能保持嵌套关系而不把嵌套对象转换成jsons(或其他序列化的字符串)以便放入哈希字段。这变得混乱和毫无意义,可能只是将整个序列化成json并使用字符串数据类型。 –