例如,我看到很多人正在做类似以下的事情:
> set data:1000 "some string 1"
> set data:1001 "some string 2"
Run Code Online (Sandbox Code Playgroud)
但是使用散列来最小化键的数量怎么样?
> hset data 1000 "some string 1"
> hset data 1001 "some string 2"
Run Code Online (Sandbox Code Playgroud)
第二种方式只会创建一个data密钥,而不是第一种方式创建多个密钥。
推荐哪种方式?
我只是看到一些人和教程在做hset data:10 01 xxx。这其实与我的问题无关。我的问题只是问set data:1001 xxx和之间有什么建议hset data 1001 xxx。
而且我不打算修改hash-max-zipmap-entries和hash-max-zipmap-value。这意味着哈希值最终将超过这两个值。在这样的配置下,这两种方式是一样的吗?或者推荐哪种方式?
这一切都取决于您想要支持的权衡。一般来说,使用哈希值比使用简单键占用的内存更小。事实上,它的内存大约减少了一个数量级。并且对哈希值的访问是常数时间。因此,如果您只是将 Redis 用作键值存储,那么哈希值比简单键更有效。
但是,如果您需要支持过期、密钥空间通知等,那么您将需要使用简单密钥。
hash-max-zipmap-entries只需要小心调整 redis.conf 中的值hash-max-zipmap-value,以确保在您的环境中正确处理哈希值。
您可以在文档的内存优化部分阅读所有详细信息。