是否减少Redis的负担来做5个独立查询的成员[密钥] 5?

时间:2017-02-03 18:33:45

标签: redis

如果某个集合上的Redis SRANDMEMBER被多次调用(运行时未知),它是否会减少Redis服务器上的负载

SRANDMEMBER [key] count

而不是运行

SRANDMEMBER [key] 1,计算次数?

例如,当我们知道永远不会超过5个随机成员时,为srandmember [key] 5运行它。

1 个答案:

答案 0 :(得分:2)

这取决于很多事情......

首先,让我们将SRANDMEMBER [key] 1称为SRANDMEMBER,将SRANDMEMBER [key] count称为batch SRANDMEMBER。此外,SRANDMEMBER [key] 1等于SRANDMEMBER [key]

  

您想要多少随机会员?

如果您需要太多随机成员,即非常大的count,那么batch SRANDMEMBER可能会长时间阻止服务器,因为Redis是单线程。这增加了Redis的负担。

相反,如果count很小,例如小于10batch SRANDMEMBER应该非常有效,并且不会增加任何重大负荷。

  

网络延迟

与多次调用SRANDMEMBER(多个' RTT')相比,batch SRANDMEMBER可以减少网络延迟,即只花费一个RTT

  

独特的随机成员

通过多次调用SRANDMEMBER,您可能会多次获得相同的成员。

如果您想要独特的随机成员,则必须使用batch SRANDMEMBER。如果count为正,则Redis保证返回的成员是唯一的。当然,如果count大于count的大小,则返回的成员数可能会小于SET

如果您的系统容忍重复的随机成员,您可以使用SRANDMEMBER的多个来电,或使用batch SRANDMEMBERcount的{​​{1}}来电。