mirror of
https://github.com/charlienet/go-mixed.git
synced 2025-07-17 16:12:42 +08:00
46 lines
808 B
Go
46 lines
808 B
Go
package redis
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/charlienet/go-mixed/expr"
|
|
)
|
|
|
|
const (
|
|
defaultSeparator = ":"
|
|
)
|
|
|
|
type redisPrefix struct {
|
|
prefix string
|
|
separator string
|
|
}
|
|
|
|
func newPrefix(separator string, prefix ...string) redisPrefix {
|
|
s := expr.Ternary(len(separator) == 0, defaultSeparator, separator)
|
|
|
|
return redisPrefix{
|
|
separator: s,
|
|
prefix: expr.Ternary(len(prefix) > 0, strings.Join(prefix, separator), ""),
|
|
}
|
|
}
|
|
|
|
func (p *redisPrefix) Prefix() string {
|
|
return p.prefix
|
|
}
|
|
|
|
func (p *redisPrefix) Separator() string {
|
|
return p.separator
|
|
}
|
|
|
|
func (p *redisPrefix) hasPrefix() bool {
|
|
return len(p.prefix) > 0
|
|
}
|
|
|
|
func (p *redisPrefix) join(key ...string) string {
|
|
s := make([]string, 0, len(key)+1)
|
|
s = append(s, p.prefix)
|
|
s = append(s, key...)
|
|
|
|
return strings.Join(s, p.separator)
|
|
}
|