基于go使用redis实现简易排行榜功能
package main
import (
"context"
"fmt"
"github.com/go-redis/redis/v8"
)
var ctx = context.Background()
func main() {
rdb := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
Password: "", // 默认没有密码,如果设置了需要填写
DB: 0, // 默认数据库为0
})
// 假设用户分数
userScore := make(map[string]int)
userScore["user1"] = 100
userScore["user2"] = 80
userScore["user3"] = 120
// 将用户分数排序并存储到Redis ZSET
for user, score := range userScore {
err := rdb.ZAdd(ctx, "leaderboard", &redis.Z{
Score: float64(score),
Member: user,
}).Err()
if err != nil {
panic(err)
}
}
// 获取排行榜前3名
leaderboard, err := rdb.ZRevRangeWithScores(ctx, "leaderboard", 0, 2).Result()
if err != nil {
panic(err)
}
// 打印结果
for _, entry := range leaderboard {
member := entry.Member.(string)
score := entry.Score
fmt.Printf("Member: %s, Score: %v\n", member, score)
}
}
这段代码首先创建了一个Redis客户端,然后模拟了一个用户分数的字典,并将其存储到Redis的有序集合(ZSET)中。接着,它从Redis中获取了排行榜的前三名,并打印出来。这个例子展示了如何使用Redis的ZADD和ZREVRANGE命令来实现一个简单的排行榜功能。
评论已关闭