| 1234567891011121314151617181920212223242526272829303132333435363738 |
- package cache
- import (
- "context"
- "fmt"
- "time"
- "github.com/go-redis/redis/v8"
- )
- var C *redis.Client
- func Init(addr string) {
- C = redis.NewClient(&redis.Options{
- Addr: addr,
- DB: 12,
- })
- ctx := context.Background()
- if err := C.Do(ctx, "PING").Err(); err != nil {
- fmt.Println(addr)
- errStr := fmt.Sprintf("Redis 无法访问: %s", err.Error())
- panic(errStr)
- }
- }
- func GetOrSet(ctx context.Context, key string, ttl time.Duration, fetch func() (interface{}, error)) (interface{}, error) {
- val, err := C.Get(ctx, key).Result()
- if err == nil {
- return val, nil
- }
- result, err := fetch()
- if err != nil {
- return nil, err
- }
- C.Set(ctx, key, result, ttl)
- return result, nil
- }
|