4
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								go.mod
									
									
									
									
									
								
							| @@ -4,6 +4,8 @@ go 1.16 | ||||
|  | ||||
| require ( | ||||
| 	github.com/go-redis/redis/v8 v8.11.5 | ||||
| 	go.unistack.org/micro/v3 v3.9.10 | ||||
| 	github.com/google/gnostic v0.6.9 // indirect | ||||
| 	go.unistack.org/micro/v3 v3.9.11 | ||||
| 	golang.org/x/net v0.0.0-20220225172249-27dd8689420f // indirect | ||||
| 	gopkg.in/yaml.v3 v3.0.1 // indirect | ||||
| ) | ||||
|   | ||||
							
								
								
									
										6
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								go.sum
									
									
									
									
									
								
							| @@ -55,6 +55,8 @@ github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiu | ||||
| github.com/google/gnostic v0.6.6/go.mod h1:Nm8234We1lq6iB9OmlgNv3nH91XLLVZHCDayfA3xq+E= | ||||
| github.com/google/gnostic v0.6.8 h1:bT56GPYBWh1tvBuBEd94qcS3+60b+y0HQur0ITkGuCk= | ||||
| github.com/google/gnostic v0.6.8/go.mod h1:Nm8234We1lq6iB9OmlgNv3nH91XLLVZHCDayfA3xq+E= | ||||
| github.com/google/gnostic v0.6.9 h1:ZK/5VhkoX835RikCHpSUJV9a+S3e1zLh59YnyWeBW+0= | ||||
| github.com/google/gnostic v0.6.9/go.mod h1:Nm8234We1lq6iB9OmlgNv3nH91XLLVZHCDayfA3xq+E= | ||||
| github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= | ||||
| github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= | ||||
| github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= | ||||
| @@ -110,6 +112,8 @@ go.unistack.org/micro-proto/v3 v3.2.7 h1:zG6d69kHc+oij2lwQ3AfrCgdjiEVRG2A7Tlsxju | ||||
| go.unistack.org/micro-proto/v3 v3.2.7/go.mod h1:ZltVWNECD5yK+40+OCONzGw4OtmSdTpVi8/KFgo9dqM= | ||||
| go.unistack.org/micro/v3 v3.9.10 h1:MOLOM8sm3PthhkJVKiraUlOMDyQLAofKNCJakPN/JBw= | ||||
| go.unistack.org/micro/v3 v3.9.10/go.mod h1:LrBm9Fsf4MbY8DlUbdwRTYJosMkN8wrtOQHoYBlMkz8= | ||||
| go.unistack.org/micro/v3 v3.9.11 h1:dsZVss3nvfByL1ZDJNnUVQB1N8w6qn4pr9vIkeBiii8= | ||||
| go.unistack.org/micro/v3 v3.9.11/go.mod h1:LrBm9Fsf4MbY8DlUbdwRTYJosMkN8wrtOQHoYBlMkz8= | ||||
| golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= | ||||
| golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= | ||||
| golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= | ||||
| @@ -223,5 +227,7 @@ gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C | ||||
| gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | ||||
| gopkg.in/yaml.v3 v3.0.0 h1:hjy8E9ON/egN1tAYqKb61G10WtihqetD4sz2H+8nIeA= | ||||
| gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | ||||
| gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= | ||||
| gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | ||||
| honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= | ||||
| honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= | ||||
|   | ||||
							
								
								
									
										30
									
								
								redis.go
									
									
									
									
									
								
							
							
						
						
									
										30
									
								
								redis.go
									
									
									
									
									
								
							| @@ -14,6 +14,7 @@ type rkv struct { | ||||
| 	cli  redisClient | ||||
| } | ||||
|  | ||||
| // TODO: add ability to set some redis options https://pkg.go.dev/github.com/go-redis/redis/v8#Options | ||||
| type redisClient interface { | ||||
| 	Get(ctx context.Context, key string) *redis.StringCmd | ||||
| 	Del(ctx context.Context, keys ...string) *redis.IntCmd | ||||
| @@ -44,6 +45,11 @@ func (r *rkv) Exists(ctx context.Context, key string, opts ...store.ExistsOption | ||||
| 	if len(options.Namespace) == 0 { | ||||
| 		options.Namespace = r.opts.Namespace | ||||
| 	} | ||||
| 	if r.opts.Timeout > 0 { | ||||
| 		var cancel context.CancelFunc | ||||
| 		ctx, cancel = context.WithTimeout(ctx, r.opts.Timeout) | ||||
| 		defer cancel() | ||||
| 	} | ||||
| 	rkey := fmt.Sprintf("%s%s", options.Namespace, key) | ||||
| 	st, err := r.cli.Exists(ctx, rkey).Result() | ||||
| 	if err != nil { | ||||
| @@ -60,7 +66,11 @@ func (r *rkv) Read(ctx context.Context, key string, val interface{}, opts ...sto | ||||
| 	if len(options.Namespace) == 0 { | ||||
| 		options.Namespace = r.opts.Namespace | ||||
| 	} | ||||
|  | ||||
| 	if r.opts.Timeout > 0 { | ||||
| 		var cancel context.CancelFunc | ||||
| 		ctx, cancel = context.WithTimeout(ctx, r.opts.Timeout) | ||||
| 		defer cancel() | ||||
| 	} | ||||
| 	rkey := fmt.Sprintf("%s%s", options.Namespace, key) | ||||
| 	buf, err := r.cli.Get(ctx, rkey).Bytes() | ||||
| 	if err != nil && err == redis.Nil { | ||||
| @@ -92,7 +102,11 @@ func (r *rkv) Delete(ctx context.Context, key string, opts ...store.DeleteOption | ||||
| 	if len(options.Namespace) == 0 { | ||||
| 		options.Namespace = r.opts.Namespace | ||||
| 	} | ||||
|  | ||||
| 	if r.opts.Timeout > 0 { | ||||
| 		var cancel context.CancelFunc | ||||
| 		ctx, cancel = context.WithTimeout(ctx, r.opts.Timeout) | ||||
| 		defer cancel() | ||||
| 	} | ||||
| 	rkey := fmt.Sprintf("%s%s", options.Namespace, key) | ||||
| 	return r.cli.Del(ctx, rkey).Err() | ||||
| } | ||||
| @@ -108,7 +122,11 @@ func (r *rkv) Write(ctx context.Context, key string, val interface{}, opts ...st | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	if r.opts.Timeout > 0 { | ||||
| 		var cancel context.CancelFunc | ||||
| 		ctx, cancel = context.WithTimeout(ctx, r.opts.Timeout) | ||||
| 		defer cancel() | ||||
| 	} | ||||
| 	return r.cli.Set(ctx, rkey, buf, options.TTL).Err() | ||||
| } | ||||
|  | ||||
| @@ -117,7 +135,11 @@ func (r *rkv) List(ctx context.Context, opts ...store.ListOption) ([]string, err | ||||
| 	if len(options.Namespace) == 0 { | ||||
| 		options.Namespace = r.opts.Namespace | ||||
| 	} | ||||
|  | ||||
| 	if r.opts.Timeout > 0 { | ||||
| 		var cancel context.CancelFunc | ||||
| 		ctx, cancel = context.WithTimeout(ctx, r.opts.Timeout) | ||||
| 		defer cancel() | ||||
| 	} | ||||
| 	// TODO: add support for prefix/suffix/limit | ||||
| 	keys, err := r.cli.Keys(ctx, "*").Result() | ||||
| 	if err != nil { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user