利用 Redis Sorted Set 实现高性能排行榜
import redis
# 连接到Redis
redis_host = 'localhost'
redis_port = 6379
redis_db = 0
r = redis.StrictRedis(host=redis_host, port=redis_port, db=redis_db)
# 更新分数,如果成员存在则更新其分数,不存在则添加该成员
def update_score(leaderboard_key, member, score):
r.zadd(leaderboard_key, {member: score})
# 获取排行榜前N名成员及其分数
def get_top_scores(leaderboard_key, start, stop):
return r.zrevrange(leaderboard_key, start, stop, withscores=True)
# 示例用法
leaderboard_key = 'weekly_leaderboard'
member = 'user123'
score = 1000
# 更新成员的分数
update_score(leaderboard_key, member, score)
# 获取前10名成员
top_scores = get_top_scores(leaderboard_key, 0, 9)
for member, score in top_scores:
print(f'Member: {member.decode("utf-8")}, Score: {score}')
这段代码使用了Redis的Sorted Set数据结构来维护一个高性能的排行榜。update_score
函数用于更新成员的分数,如果成员不存在则添加。get_top_scores
函数用于获取排行榜上指定范围内的成员及其分数。这里使用了Redis的Python客户端库redis-py
。
评论已关闭