如果某个集合上的Redis SRANDMEMBER
被多次调用(运行时未知),它是否会减少Redis服务器上的负载
SRANDMEMBER [key] count
而不是运行
SRANDMEMBER [key] 1
,计算次数?
例如,当我们知道永远不会超过5个随机成员时,为srandmember [key] 5
运行它。
答案 0 :(得分:2)
这取决于很多事情......
首先,让我们将SRANDMEMBER [key] 1
称为SRANDMEMBER
,将SRANDMEMBER [key] count
称为batch SRANDMEMBER
。此外,SRANDMEMBER [key] 1
等于SRANDMEMBER [key]
。
您想要多少随机会员?
如果您需要太多随机成员,即非常大的count
,那么batch SRANDMEMBER
可能会长时间阻止服务器,因为Redis是单线程。这增加了Redis的负担。
相反,如果count
很小,例如小于10
,batch SRANDMEMBER
应该非常有效,并且不会增加任何重大负荷。
网络延迟
与多次调用SRANDMEMBER
(多个' RTT')相比,batch SRANDMEMBER
可以减少网络延迟,即只花费一个RTT
。
独特的随机成员
通过多次调用SRANDMEMBER
,您可能会多次获得相同的成员。
如果您想要独特的随机成员,则必须使用batch SRANDMEMBER
。如果count
为正,则Redis保证返回的成员是唯一的。当然,如果count
大于count
的大小,则返回的成员数可能会小于SET
。
如果您的系统容忍重复的随机成员,您可以使用SRANDMEMBER
的多个来电,或使用batch SRANDMEMBER
为count
的{{1}}来电。