在Redis上执行srandmember [key] 5是否需要5次以上的单独查询?
在的情况下的Redis SRANDMEMBER
上的一组被称为潜在多次(在运行时未知的),它降低Redis的服务器上的负载使用在Redis上执行srandmember [key] 5是否需要5次以上的单独查询?
SRANDMEMBER [key] count
,而不是运行
SRANDMEMBER [key] 1
,计数次数?
例如,当我们知道永远不会有超过5个随机成员需要时,运行它为srandmember [key] 5
。
这取决于很多事情......
首先,让我们称之为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
大于SET
的大小,返回成员的数量可能会小于count
。
如果您的系统允许使用重复的随机成员,则可以使用多次调用SRANDMEMBER
,或使用batch SRANDMEMBER
的一次调用,使用负数count
。