例如,我看到许多人正在做以下事情:
> set data:1000 "some string 1"
> set data:1001 "some string 2"
但是使用散列来最大程度地减少键的数量呢?
> hset data 1000 "some string 1"
> hset data 1001 "some string 2"
第二种方式,它将仅创建一个data
键,而不是第一种方式创建许多键。
推荐哪种方式?
我刚刚看到有人和教程在做hset data:10 01 xxx
。这实际上与我的问题无关。我的问题只是询问在set data:1001 xxx
和hset data 1001 xxx
之间的建议。
我不打算修改hash-max-zipmap-entries
和hash-max-zipmap-value
。这意味着哈希值最终将超过两个值。在这样的配置中,两种方式是否相同?或推荐哪种方式?
答案 0 :(得分:3)
使用字符串的原因:
使用哈希的原因:
del
/ unlink
),或者有一个超时时间会立即影响所有这些值 hscan
/ hgetall
,更喜欢scan
/ keys
)答案 1 :(得分:2)
这全部取决于您要支持的权衡。通常,与使用简单键相比,使用哈希将占用较小的内存。实际上,它的内存大约减少了一个数量级。访问哈希值是固定时间。因此,如果您只是将redis用作键值存储,则哈希比简单键更有效。
但是,如果您需要支持到期,键空间通知等,则需要使用简单键。
请注意在redis.conf中调整hash-max-zipmap-entries
和hash-max-zipmap-value
的值,以确保针对您的环境正确处理散列。
您可以在memory optimization section of the documentation中阅读所有详细信息。