You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
go-library/vendor/github.com/gogf/gf/v2/database/gredis/gredis_redis_group_sorted_s...

86 lines
3.7 KiB

// Copyright GoFrame Author(https://goframe.org). All Rights Reserved.
//
// This Source Code Form is subject to the terms of the MIT License.
// If a copy of the MIT was not distributed with this file,
// You can obtain one at https://github.com/gogf/gf.
package gredis
import (
"context"
"github.com/gogf/gf/v2/container/gvar"
)
// IGroupSortedSet manages redis sorted set operations.
// Implements see redis.GroupSortedSet.
type IGroupSortedSet interface {
ZAdd(ctx context.Context, key string, option *ZAddOption, member ZAddMember, members ...ZAddMember) (*gvar.Var, error)
ZScore(ctx context.Context, key string, member interface{}) (float64, error)
ZIncrBy(ctx context.Context, key string, increment float64, member interface{}) (float64, error)
ZCard(ctx context.Context, key string) (int64, error)
ZCount(ctx context.Context, key string, min, max string) (int64, error)
ZRange(ctx context.Context, key string, start, stop int64, option ...ZRangeOption) (gvar.Vars, error)
ZRevRange(ctx context.Context, key string, start, stop int64, option ...ZRevRangeOption) (*gvar.Var, error)
ZRank(ctx context.Context, key string, member interface{}) (int64, error)
ZRevRank(ctx context.Context, key string, member interface{}) (int64, error)
ZRem(ctx context.Context, key string, member interface{}, members ...interface{}) (int64, error)
ZRemRangeByRank(ctx context.Context, key string, start, stop int64) (int64, error)
ZRemRangeByScore(ctx context.Context, key string, min, max string) (int64, error)
ZRemRangeByLex(ctx context.Context, key string, min, max string) (int64, error)
ZLexCount(ctx context.Context, key, min, max string) (int64, error)
}
// ZAddOption provides options for function ZAdd.
type ZAddOption struct {
XX bool // Only update elements that already exist. Don't add new elements.
NX bool // Only add new elements. Don't update already existing elements.
// Only update existing elements if the new score is less than the current score.
// This flag doesn't prevent adding new elements.
LT bool
// Only update existing elements if the new score is greater than the current score.
// This flag doesn't prevent adding new elements.
GT bool
// Modify the return value from the number of new elements added, to the total number of elements changed (CH is an abbreviation of changed).
// Changed elements are new elements added and elements already existing for which the score was updated.
// So elements specified in the command line having the same score as they had in the past are not counted.
// Note: normally the return value of ZAdd only counts the number of new elements added.
CH bool
// When this option is specified ZAdd acts like ZIncrBy. Only one score-element pair can be specified in this mode.
INCR bool
}
// ZAddMember is element struct for set.
type ZAddMember struct {
Score float64
Member interface{}
}
// ZRangeOption provides extra option for ZRange function.
type ZRangeOption struct {
ByScore bool
ByLex bool
// The optional REV argument reverses the ordering, so elements are ordered from highest to lowest score,
// and score ties are resolved by reverse lexicographical ordering.
Rev bool
Limit *ZRangeOptionLimit
// The optional WithScores argument supplements the command's reply with the scores of elements returned.
WithScores bool
}
// ZRangeOptionLimit provides LIMIT argument for ZRange function.
// The optional LIMIT argument can be used to obtain a sub-range from the matching elements
// (similar to SELECT LIMIT offset, count in SQL). A negative `Count` returns all elements from the `Offset`.
type ZRangeOptionLimit struct {
Offset *int
Count *int
}
// ZRevRangeOption provides options for function ZRevRange.
type ZRevRangeOption struct {
WithScores bool
}