面试题答案
一键面试- 数据结构设计:
- 使用有序集合(Sorted Set)来存储用户积分信息。有序集合的成员(member)为用户ID,分值(score)为用户的积分。例如:
ZADD user_scores 100 user1 ZADD user_scores 200 user2
- 使用有序集合(Sorted Set)来存储用户积分信息。有序集合的成员(member)为用户ID,分值(score)为用户的积分。例如:
- 定义访问权限区间:
- 假设我们有三个级别资源:低级资源(积分0 - 99可访问)、中级资源(积分100 - 199可访问)、高级资源(积分200及以上可访问)。
- 使用
SORT
命令判断访问权限:- Redis
SORT
命令本身不直接用于此场景,但可结合有序集合的操作实现。例如,要判断用户user1
能否访问中级资源:- 先通过
ZRANK user_scores user1
获取用户user1
在有序集合中的排名(排名从0开始)。假设返回值为rank
。 - 再通过
ZSCORE user_scores user1
获取用户user1
的积分,假设返回值为score
。 - 然后判断
score
是否在100到199之间。如果score >= 100
且score < 200
,则用户user1
可以访问中级资源。
- 先通过
- 若要获取所有能访问中级资源的用户ID:
- 可以使用
ZRANGEBYSCORE user_scores 100 199
,该命令会返回积分在100到199之间的所有用户ID(即成员),这些用户具备访问中级资源的权限。
- 可以使用
- Redis
在实际应用中,可将这些操作封装在应用程序代码中,根据不同的资源访问请求,结合上述Redis有序集合操作逻辑来判断用户权限。