Redis 实现简单排行榜功能 | 实战案例
import redis
# 连接Redis
r = redis.Redis(host='localhost', port=6379, db=0)
# 添加分数
def add_score(user_id, score):
r.zadd('leaderboard', {user_id: score})
# 获取排行榜前N名
def get_top_n(n):
return r.zrevrange('leaderboard', 0, n-1)
# 获取用户分数
def get_user_score(user_id):
return r.zscore('leaderboard', user_id)
# 更新用户分数
def update_score(user_id, new_score):
r.zadd('leaderboard', {user_id: new_score})
# 示例
add_score('user1', 100)
add_score('user2', 200)
add_score('user3', 150)
top_3 = get_top_n(3)
print(top_3) # 输出: [b'user2', b'user3', b'user1']
user1_score = get_user_score('user1')
print(user1_score) # 输出: 100.0
update_score('user1', 250)
top_3_updated = get_top_n(3)
print(top_3_updated) # 输出: [b'user2', b'user1', b'user3']
这段代码使用了Redis的有序集合(sorted set)来实现一个简单的排行榜功能。它提供了添加分数、获取排行榜前N名、获取用户分数以及更新用户分数的功能。代码示例中展示了如何连接Redis、添加用户分数、获取排行榜以及更新用户分数的过程。
评论已关闭