https://www.nowcoder.com/feed/main/detail/f371f637fa3b4f15a77ae358019d1e65?sourceSSR=users

ZRANGEBYSCORE myzset 20 20
ZRANK myzset member2

通过这两个步骤找到分数对应的排名的总时间复杂度为 O(log(N))

在 Redis 中,zset(有序集合)是一种数据结构,可以用来实现存储和查询元素分数及其排名的功能。zset 按照分数对元素进行排序,并且提供了一些常用的操作,比如添加元素、获取元素排名等。

要实现传入一个分数,返回这个分数对应的排名,可以使用以下步骤:

  1. 添加元素到有序集合: 使用 ZADD 命令添加元素到有序集合,并设置分数。

    ZADD myzset score1 member1
    ZADD myzset score2 member2
    ZADD myzset score3 member3
    
    
  2. 获取分数对应的排名: 使用 ZRANK 命令获取元素的排名。ZRANK 命令返回元素在有序集合中的排名(从 0 开始)。

    ZRANK myzset member1
    
    

示例

假设有一个有序集合 myzset,其中包含以下元素及其分数:

Member Score
member1 10
member2 20
member3 30

使用 Redis CLI 命令:

# 添加元素到有序集合
ZADD myzset 10 member1
ZADD myzset 20 member2
ZADD myzset 30 member3

# 获取元素的排名
ZRANK myzset member1

如果你想传入一个分数并获取这个分数对应的排名,可以通过以下步骤:

  1. 找到该分数对应的元素(如果存在)。
  2. 获取该元素的排名