sRandMember 命令是用於方法 set 集合中的“隨機”元素
命令格式爲
sRandMember key [count]
以下內容來自 http://www.redis.net.cn/order/3604.html
1.如果 count 爲正數,且小於集合基數,那麼命令返回一個包含 count 個元素的數組,數組中的元素各不相同。
2.如果 count 大於等於集合基數,那麼返回整個集合。
3.如果 count 爲負數,那麼命令返回一個數組,數組中的元素可能會重複出現多次,而數組的長度爲 count 的絕對值。
而 spring 封裝的 redis 是每次使用的指令如下,即每次都是上述的第三種情況
sRandMember key [-count]
spring 的默認是允許重複元素的,源碼如下:
List<V> org.springframework.data.redis.core.DefaultSetOperations.randomMembers(K key, long count)
public List<V> randomMembers(K key, final long count) {
if (count < 0) {
throw new IllegalArgumentException("Use a positive number for count. "
+ "This method is already allowing duplicate elements.");
}
final byte[] rawKey = rawKey(key);
List<byte[]> rawValues = execute(new RedisCallback<List<byte[]>>() {
public List<byte[]> doInRedis(RedisConnection connection) {
return connection.sRandMember(rawKey, -count);
}
}, true);
return deserializeValues(rawValues);
}