github.com/wangyougui/gf/v2@v2.6.5/database/gredis/gredis_redis_group_sorted_set.go (about) 1 // Copyright GoFrame Author(https://goframe.org). All Rights Reserved. 2 // 3 // This Source Code Form is subject to the terms of the MIT License. 4 // If a copy of the MIT was not distributed with this file, 5 // You can obtain one at https://github.com/wangyougui/gf. 6 7 package gredis 8 9 import ( 10 "context" 11 12 "github.com/wangyougui/gf/v2/container/gvar" 13 ) 14 15 // IGroupSortedSet manages redis sorted set operations. 16 // Implements see redis.GroupSortedSet. 17 type IGroupSortedSet interface { 18 ZAdd(ctx context.Context, key string, option *ZAddOption, member ZAddMember, members ...ZAddMember) (*gvar.Var, error) 19 ZScore(ctx context.Context, key string, member interface{}) (float64, error) 20 ZIncrBy(ctx context.Context, key string, increment float64, member interface{}) (float64, error) 21 ZCard(ctx context.Context, key string) (int64, error) 22 ZCount(ctx context.Context, key string, min, max string) (int64, error) 23 ZRange(ctx context.Context, key string, start, stop int64, option ...ZRangeOption) (gvar.Vars, error) 24 ZRevRange(ctx context.Context, key string, start, stop int64, option ...ZRevRangeOption) (*gvar.Var, error) 25 ZRank(ctx context.Context, key string, member interface{}) (int64, error) 26 ZRevRank(ctx context.Context, key string, member interface{}) (int64, error) 27 ZRem(ctx context.Context, key string, member interface{}, members ...interface{}) (int64, error) 28 ZRemRangeByRank(ctx context.Context, key string, start, stop int64) (int64, error) 29 ZRemRangeByScore(ctx context.Context, key string, min, max string) (int64, error) 30 ZRemRangeByLex(ctx context.Context, key string, min, max string) (int64, error) 31 ZLexCount(ctx context.Context, key, min, max string) (int64, error) 32 } 33 34 // ZAddOption provides options for function ZAdd. 35 type ZAddOption struct { 36 XX bool // Only update elements that already exist. Don't add new elements. 37 NX bool // Only add new elements. Don't update already existing elements. 38 // Only update existing elements if the new score is less than the current score. 39 // This flag doesn't prevent adding new elements. 40 LT bool 41 42 // Only update existing elements if the new score is greater than the current score. 43 // This flag doesn't prevent adding new elements. 44 GT bool 45 46 // Modify the return value from the number of new elements added, to the total number of elements changed (CH is an abbreviation of changed). 47 // Changed elements are new elements added and elements already existing for which the score was updated. 48 // So elements specified in the command line having the same score as they had in the past are not counted. 49 // Note: normally the return value of ZAdd only counts the number of new elements added. 50 CH bool 51 52 // When this option is specified ZAdd acts like ZIncrBy. Only one score-element pair can be specified in this mode. 53 INCR bool 54 } 55 56 // ZAddMember is element struct for set. 57 type ZAddMember struct { 58 Score float64 59 Member interface{} 60 } 61 62 // ZRangeOption provides extra option for ZRange function. 63 type ZRangeOption struct { 64 ByScore bool 65 ByLex bool 66 // The optional REV argument reverses the ordering, so elements are ordered from highest to lowest score, 67 // and score ties are resolved by reverse lexicographical ordering. 68 Rev bool 69 Limit *ZRangeOptionLimit 70 // The optional WithScores argument supplements the command's reply with the scores of elements returned. 71 WithScores bool 72 } 73 74 // ZRangeOptionLimit provides LIMIT argument for ZRange function. 75 // The optional LIMIT argument can be used to obtain a sub-range from the matching elements 76 // (similar to SELECT LIMIT offset, count in SQL). A negative `Count` returns all elements from the `Offset`. 77 type ZRangeOptionLimit struct { 78 Offset *int 79 Count *int 80 } 81 82 // ZRevRangeOption provides options for function ZRevRange. 83 type ZRevRangeOption struct { 84 WithScores bool 85 }