94 lines
1.8 KiB
Go
94 lines
1.8 KiB
Go
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
|
|
}
|