~bigbes/core-go

cbf919e45b5b2bbaec3abd98d3998320bd581dad — Pinghao Wu 1 year, 5 months ago 293ca65
redis: avoid building UniversalOptions for standard mode

This makes it support all options that go-redis recognizes in ParseURL,
by constructing a standard client directly instead of building
UniversalOptions ourselves.
2 files changed, 8 insertions(+), 8 deletions(-)

R redis/{url => client}.go
M server/server.go
R redis/url.go => redis/client.go +7 -6
@@ 68,7 68,7 @@ func parseSentinelURLs(urls []*url.URL) (*redis.UniversalOptions, error) {
	return &uopts, nil
}

func ParseURL(raw string) (*redis.UniversalOptions, error) {
func NewUniversalClient(raw string) (redis.UniversalClient, error) {
	// Support multiple URLs for sentinel connections
	var schemes []string
	var urls []*url.URL


@@ 90,15 90,16 @@ func ParseURL(raw string) (*redis.UniversalOptions, error) {
			if err != nil {
				return nil, err
			}
			return &redis.UniversalOptions{
				Addrs: []string{opts.Addr},
				// TODO
			}, nil
			return redis.NewClient(opts), nil
		}
		if urls[0].Scheme != "redis+sentinel" && urls[0].Scheme != "rediss+sentinel" {
			return nil, fmt.Errorf("invalid connection URL scheme: %s", urls[0].Scheme)
		}
		// a single sentinel URL, fall through to parsing that
	}
	return parseSentinelURLs(urls)
	opts, err := parseSentinelURLs(urls)
	if err != nil {
		return nil, err
	}
	return redis.NewUniversalClient(opts), nil
}

M server/server.go => server/server.go +1 -2
@@ 178,11 178,10 @@ func (server *Server) WithDefaultMiddleware() *Server {
	if !ok {
		rcs = "redis://"
	}
	ropts, err := redis.ParseURL(rcs)
	rc, err := redis.NewUniversalClient(rcs)
	if err != nil {
		log.Fatalf("Invalid sr.ht::redis-host in config.ini: %v", err)
	}
	rc := goRedis.NewUniversalClient(ropts)
	server.redis = rc

	apiconf := fmt.Sprintf("%s::api", server.service)