// Package util provide some utility fun package util import ( "sort" "github.com/redis/go-redis/v9" ) // MapSlice define func to build a new slice by applying f to every element of s. func MapSlice[T, U any](s []T, f func(T) U) []U { result := make([]U, 0, len(s)) for _, item := range s { result = append(result, f(item)) } return result } // ConvertZSetMembersToFloat64 define func to conver zset member type to float64 func ConvertZSetMembersToFloat64(members []redis.Z) []float64 { // recovery time sorted in ascending order sortRedisZByTimeMemberAscending(members) return MapSlice(members, func(member redis.Z) float64 { return member.Score }) } func sortRedisZByTimeMemberAscending(data []redis.Z) { sort.Slice(data, func(i, j int) bool { memberI := data[i].Member.(string) memberJ := data[j].Member.(string) return memberI < memberJ }) }