【Redis】Zset有序集合常用命令以及使用场景
Redis的Zset(Sorted Set)是一个不允许有重复的成员,且每个成员都关联一个分数的有序集合。通过分数可以有序地进行访问。
常用的Zset命令包括:
ZADD key [NX|XX] [CH] [INCR] score member [score member ...]
:添加成员及其分数到Zset。ZCARD key
:获取Zset中成员的数量。ZCOUNT key min max
:获取分数在指定范围内的成员的数量。ZINCRBY key increment member
:增加指定成员的分数。ZRANGE key start stop [WITHSCORES]
:按照索引范围返回成员。ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
:按分数范围返回成员。ZREM key member [member ...]
:移除一个或多个成员。ZSCORE key member
:获取成员的分数。
使用场景:
- 排行榜:可以使用Zset按分数存储用户分数,并使用
ZRANGE
来获取排行榜上的用户。 - 时间轴行为:可以使用Zset按时间戳存储事件,并使用
ZRANGEBYSCORE
来获取一定时间范围内的事件。 - 优先队列:可以使用Zset按优先级存储任务,并使用
ZRANGE
来获取按优先级排序的任务。
示例代码(Python使用redis-py库):
import redis
# 连接Redis
r = redis.Redis(host='localhost', port=6379, db=0)
# 添加成员
r.zadd('ranking', {'player1': 100, 'player2': 200})
# 获取成员数量
count = r.zcard('ranking')
print(f'Members count: {count}')
# 增加成员分数
r.zincrby('ranking', 10, 'player1')
# 获取排名前3的玩家
players = r.zrange('ranking', 0, 2)
print(f'Top 3 players: {players}')
# 获取分数在150到230之间的玩家数量
count_in_score = r.zcount('ranking', 150, 230)
print(f'Players with score between 150 and 230: {count_in_score}')
评论已关闭