Redis 基础教程

Redis 命令

Redis 高级教程

Redis 笔记

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/redis-command-srandmember.html

Redis SRANDMEMBER 命令

Redis 集合(Sets) Redis 集合(Sets)


Redis SRANDMEMBER 命令从集合 key 中返回随机元素,而不对集合进行任何改动。该操作和 SPOP 相似,但 SPOP 将随机元素从集合中移除并返回。

该命令也和 RANDOMKEY 命令稍类似,RANDOMKEY 命令是在当前数据库范围内获取随机 key,而 SRANDMEMBER 命令是从指定集合 key 中返回随机成员。

命令格式

SRANDMEMBER key [count]

可用版本:>=1.0.0

时间复杂度:只提供 key 参数时为 O(1);如果提供了 count 参数,那么为 O(N),N 为返回数组的元素个数。

历史版本

从 Redis 2.6 版本开始,SRANDMEMBER 命令接受可选的 count 参数:

  • 如果 count 为正数,且小于集合基数,那么命令返回一个包含 count 个元素的数组,数组中的元素各不相同。如果 count 大于等于集合基数,那么返回整个集合。
  • 如果 count 为负数,那么命令返回一个数组,数组中的元素可能会重复出现多次,而数组的长度为 count 的绝对值。

命令返回值

SRANDMEMBER 命令返回有 3 种情况:

  • 当指定 key 存在且集合类型时,返回随机成员。
  • 当指定 key 不存在时,返回 nil。
  • 当指定 key 为非集合类型时,返回命令与操作类型不匹配的错误信息。

示例

redis> SADD myset one two three
(integer) 3
redis> SRANDMEMBER myset         # 指定 key 存在且集合类型时,返回随机成员
"three"
redis> SRANDMEMBER myset 2
1) "one"
2) "three"
redis> SRANDMEMBER myset -5
1) "three"
2) "one"
3) "one"
4) "two"
5) "one"
redis> SRANDMEMBER noexistkey    # 指定 key 不存在时,返回 nil
(nil)
redis> SET knowledge dict
OK
redis> SRANDMEMBER knowledge     # 指定 key 为非集合类型时,返回命令与操作类型不匹配的错误信息
(error) WRONGTYPE Operation against a key holding the wrong kind of value
redis>
Redis OBJECT 命令允许从内部查看指定 key 的 Redis 对象信息。它通常用在调试,或者了解相关 key 是否使用特殊编码的 ...
SORT命令返回或保存指定列表、集合、有序集合key中经过排序的元素。 ...
Redis GET 命令返回指定 key 所关联的字符串值。如果指定的 key 不存在时,返回特殊值 nil。此外,如果指定的 key 存储 ...
TYPE 命令返回指定 key 所储存的值的类型。 ...
Redis COMMAND 命令用于返回所有的 Redis 命令的详细信息,并以数组形式展示。 ...