golang redis zset
时间: 2023-10-30 09:58:06 浏览: 102
在 Golang 中使用 Redis 的 Zset(有序集合)可以通过官方提供的 Redis 客户端库 "github.com/go-redis/redis/v8" 来实现。
下面是一个简单的示例代码,展示如何使用 go-redis 库操作 Redis 的有序集合:
```
package main
import (
"context"
"fmt"
"github.com/go-redis/redis/v8"
)
func main() {
// 创建 Redis 客户端
rdb := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
Password: "", // Redis 无密码配置为空
DB: 0, // 使用默认数据库
})
// 向 Zset 中添加元素
err := rdb.ZAdd(context.Background(), "myzset", &redis.Z{
Score: 1.0,
Member: "one",
}, &redis.Z{
Score: 2.0,
Member: "two",
}).Err()
if err != nil {
panic(err)
}
// 获取 Zset 中的元素数量
count, err := rdb.ZCard(context.Background(), "myzset").Result()
if err != nil {
panic(err)
}
fmt.Printf("Zset 中元素数量为:%d\n", count)
// 获取 Zset 中指定成员的排名和分数
rank, err := rdb.ZRank(context.Background(), "myzset", "two").Result()
if err != nil {
panic(err)
}
score, err := rdb.ZScore(context.Background(), "myzset", "two").Result()
if err != nil {
panic(err)
}
fmt.Printf("元素 two 在 Zset 中的排名为:%d,分数为:%f\n", rank, score)
// 获取 Zset 中指定排名范围的元素
rangeByRank := rdb.ZRange(context.Background(), "myzset", 0, -1)
members, err := rangeByRank.Result()
if err != nil {
panic(err)
}
fmt.Println("按排名排序的元素列表:")
for i, member := range members {
fmt.Printf("%d: %s\n", i+1, member)
}
// 获取 Zset 中指定分数范围的元素
rangeByScore := rdb.ZRangeByScore(context.Background(), "myzset", &redis.ZRangeBy{
Min: "1.0",
Max: "2.0",
})
members, err = rangeByScore.Result()
if err != nil {
panic(err)
}
fmt.Println("按分数排序的元素列表:")
for i, member := range members {
fmt.Printf("%d: %s\n", i+1, member)
}
// 删除 Zset 中的指定元素
deletedCount, err := rdb.ZRem(context.Background(), "myzset", "one").Result()
if err != nil {
panic(err)
}
fmt.Printf("删除了 %d 个元素\n", deletedCount)
}
```
该示例代码使用 go-redis 库向 Redis 的有序集合中添加了两个元素,然后获取了集合中的元素数量、指定成员的排名和分数、指定排名范围的元素、指定分数范围的元素,最后删除了指定的元素。