package redis import ( "errors" "time" goredis "github.com/go-redis/redis" ) func (m *Manager) Get(key string) (*string, error) { if key == "" { return nil, errors.New("key is empty") } data, err := m.Client().Get(key).Result() if err != nil { if err == goredis.Nil { return nil, nil } return nil, err } else { return &data, nil } } func (m *Manager) Set(key string, value interface{}, expire time.Duration) error { if err := m.Client().Set(key, value, expire).Err(); err != nil { return err } return nil } func (m *Manager) Del(keys ...string) error { if err := m.Client().Del(keys...).Err(); err != nil { return err } return nil } func (m *Manager) GetBytes(key string) ([]byte, error) { cmd := m.Client().Get(key) if err := cmd.Err(); err != nil { return []byte{}, err } return cmd.Bytes() } func (m *Manager) SAdd(key string, members ...interface{}) error { if err := m.Client().SAdd(key, members...).Err(); err != nil { return err } return nil } func (m *Manager) Exists(keys ...string) (bool, error) { cmd := m.Client().Exists(keys...) if err := cmd.Err(); err != nil { return false, err } return cmd.Val() > 0, nil } func (m *Manager) Expire(key string, expire time.Duration) error { if err := m.Client().Expire(key, expire).Err(); err != nil { return err } return nil } func (m *Manager) Keys(pattern string) ([]string, error) { list := m.Client().Keys(pattern) if err := list.Err(); err != nil { return []string{}, err } return list.Val(), nil } func (m *Manager) Incr(pattern string) (int64, error) { val, err := m.Client().Incr(pattern).Result() if err != nil { return 0, err } return val, nil } //获取key的剩余生存时间 func (m *Manager) TTL(pattern string) time.Duration { durCmd := m.Client().TTL(pattern) if durCmd != nil { return durCmd.Val() } return 0 }