redis

package module
v0.0.0-...-8751bc5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 20, 2025 License: Apache-2.0 Imports: 13 Imported by: 0

README

redis (This is a community driven project)

Redis as service discovery for Hertz.

How to use?

Server

example/server/main.go

package main

import (
	"context"

	"github.com/cloudwego/hertz/pkg/app"
	"github.com/cloudwego/hertz/pkg/app/server"
	"github.com/cloudwego/hertz/pkg/app/server/registry"
	"github.com/cloudwego/hertz/pkg/common/utils"
	"github.com/cloudwego/hertz/pkg/protocol/consts"
	"github.com/hertz-contrib/registry/redis"
)

func main() {
	r := redis.NewRedisRegistry("127.0.0.1:6379")
	addr := "127.0.0.1:8888"
	h := server.Default(
		server.WithHostPorts(addr),
		server.WithRegistry(r, &registry.Info{
			ServiceName: "hertz.test.demo",
			Addr:        utils.NewNetAddr("tcp", addr),
			Weight:      10,
			Tags:        nil,
		}),
	)
	h.GET("/ping", func(_ context.Context, ctx *app.RequestContext) {
		ctx.JSON(consts.StatusOK, utils.H{"ping": "pong"})
	})
	h.Spin()
}
Client

example/client/main.go

package main

import (
	"context"

	"github.com/cloudwego/hertz/pkg/app/client"
	"github.com/cloudwego/hertz/pkg/app/middlewares/client/sd"
	"github.com/cloudwego/hertz/pkg/common/config"
	"github.com/cloudwego/hertz/pkg/common/hlog"
	"github.com/hertz-contrib/registry/redis"
)

func main() {
	cli, err := client.NewClient()
	if err != nil {
		panic(err)
	}
	r := redis.NewRedisResolver("127.0.0.1:6379")
	cli.Use(sd.Discovery(r))
	for i := 0; i < 10; i++ {
		status, body, err := cli.Get(context.Background(), nil, "http://hertz.test.demo/ping", config.WithSD(true))
		if err != nil {
			hlog.Fatal(err)
		}
		hlog.Infof("HERTZ: code=%d,body=%s", status, string(body))
	}
}

How to run example?

run docker
make prepare
run server
go run ./example/server/main.go
run client
go run ./example/client/main.go

Compatibility

Redis client for Go see

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewRedisRegistry

func NewRedisRegistry(addr string, opts ...Option) registry.Registry

NewRedisRegistry creates a redis registry

func NewRedisResolver

func NewRedisResolver(addr string, opts ...Option) discovery.Resolver

NewRedisResolver creates a redis resolver

Types

type Option

type Option func(opts *Options)

func WithDB

func WithDB(db int) Option

func WithDialer

func WithDialer(dialer func(ctx context.Context, network, addr string) (net.Conn, error)) Option

func WithExpireTime

func WithExpireTime(time int) Option

WithExpireTime redis key expiration time in seconds NOTE: expiration time must be greater than refresh interval Default: 60s

func WithPassword

func WithPassword(password string) Option

func WithReadTimeout

func WithReadTimeout(t time.Duration) Option

func WithRefreshInterval

func WithRefreshInterval(interval int) Option

WithRefreshInterval redis key refresh interval in seconds NOTE: refresh interval must be less than expiration time Default: 30s

func WithTLSConfig

func WithTLSConfig(t *tls.Config) Option

func WithWriteTimeout

func WithWriteTimeout(t time.Duration) Option

type Options

type Options struct {
	*redis.Options
	// contains filtered or unexported fields
}

Directories

Path Synopsis
example

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL