go-redis ZSet有序集合操作
Zset(sorted set):有序不重复集合,每个元素会关联一个float64类型的值,类似Hashmap中的key-valule,但是这里是member-score。
添加一个值
key表示这个Zset的key,后续需要通过key来找到对应的Zset
func (c cmdable) ZAdd(ctx context.Context, key string, members ...Z)
后面的一个参数需要用到redis库中提供的结构体
type Z struct {
Score float64
Member interface{}
}
因此在使用中一般写成这种形式
rdb.ZAdd(ctx,"key",redis.Z{Member: xxx,Score: xxx})
或者创造一个Z结构的结构体来传入函数
按照顺序进行查找Member
返回在这个Zset中,排位从start到stop(闭区间)的Member值。stop中使用-1表示取到最后
unc (c cmdable) ZRange(ctx context.Context, key string, start, stop int64) *StringSliceCmd
若想反向取可以使用ZRevRange函数
根据Score来查询Menber
unc (c cmdable) ZRangeByScore(ctx context.Context, key string, opt *ZRangeBy) *StringSliceCmd
这里特别用到了ZRangeBy结构体作为opt参数传入
type ZRangeBy struct {
Min, Max string
Offset, Count int64
}
Min,Max分别表示Score的下限以及上限,Offset表示偏移量(在满足条件的范围,从offset下标处开始取),Count表示查询返回结果的个数。
带Socre值的查询
可以直接在上面提到的两个函数名称后添加WithScores就可以获得带有Score的返回值ZRangeWithScores ZRangeByScoreWithScores
本文仅旨在阐明如何分别获取Zset中Member和Score的值,多余的函数可以查看相关文档进行学习。