在Redis中使用哪个Hset或HMSet?

时间:2019-11-27 15:32:16

标签: redis stackexchange.redis

我是Redis的新手。我只是想使用HashSet方法将值存储在Redis中,该方法可通过StackExchange.Redis.StrongName程序集使用(假设我有4000项)。最好单独存储4000个项目(使用HSet),还是应该传递字典(使用HMSet),以便仅调用Redis服务器调用,但需要大量数据。哪个更好?

预先感谢

2 个答案:

答案 0 :(得分:3)

从Redis 4.0.0开始不推荐使用HMSET,而建议将HSET与多个键/值对一起使用:

https://redis.io/commands/hset

https://redis.io/commands/hmset

性能为O(n)

答案 1 :(得分:2)

TL; DR就性能而言,单个呼叫“更好”。

考虑到@dizzyf对HMSET弃用的回答,问题变成“我应该使用很多小的电话而不是一个大的电话吗?”。由于处理每个命令都会产生开销,因此通常最好将调用“批量”在一起以降低价格。

Redis中的某些命令是varidiac(又称动态Arial),这意味着它们可以接受一个或多个值以消除多次调用。也就是说,用大量参数重载单个调用也不是最佳实践-通常会导致大量内存分配,并阻止服务器在处理过程中处理其他请求。

我可以通过将值划分为恒定大小的“批次”来实现这一点-100是一个好的开始,但是您始终可以对其进行调整-并在单个HSET key field1 value1 ... field100 value1000调用中发送每个这样的“批次”。

提示:如果您的Redis客户端支持,则可以使用pipelining使所有内容都具有更好的响应能力(“更好”吗?)。