Files
crawlab/backend/database/redis.go
Marvin Zhang 56c99b314f added golang
2019-07-22 12:51:52 +08:00

120 lines
2.1 KiB
Go

package database
import (
"github.com/gomodule/redigo/redis"
"github.com/spf13/viper"
"runtime/debug"
)
var RedisClient = Redis{}
type ConsumeFunc func(channel string, message []byte) error
type Redis struct {
}
func (r *Redis) RPush(collection string, value interface{}) error {
c, err := GetRedisConn()
if err != nil {
debug.PrintStack()
return err
}
defer c.Close()
if _, err := c.Do("RPUSH", collection, value); err != nil {
debug.PrintStack()
return err
}
return nil
}
func (r *Redis) LPop(collection string) (string, error) {
c, err := GetRedisConn()
if err != nil {
debug.PrintStack()
return "", err
}
defer c.Close()
value, err2 := redis.String(c.Do("LPOP", collection))
if err2 != nil {
return value, err2
}
return value, nil
}
func (r *Redis) HSet(collection string, key string, value string) error {
c, err := GetRedisConn()
if err != nil {
debug.PrintStack()
return err
}
defer c.Close()
if _, err := c.Do("HSET", collection, key, value); err != nil {
debug.PrintStack()
return err
}
return nil
}
func (r *Redis) HGet(collection string, key string) (string, error) {
c, err := GetRedisConn()
if err != nil {
debug.PrintStack()
return "", err
}
defer c.Close()
value, err2 := redis.String(c.Do("HGET", collection, key))
if err2 != nil {
return value, err2
}
return value, nil
}
func (r *Redis) HDel(collection string, key string) error {
c, err := GetRedisConn()
if err != nil {
debug.PrintStack()
return err
}
defer c.Close()
if _, err := c.Do("HDEL", collection, key); err != nil {
return err
}
return nil
}
func (r *Redis) HKeys(collection string) ([]string, error) {
c, err := GetRedisConn()
if err != nil {
debug.PrintStack()
return []string{}, err
}
defer c.Close()
value, err2 := redis.Strings(c.Do("HKeys", collection))
if err2 != nil {
return []string{}, err2
}
return value, nil
}
func GetRedisConn() (redis.Conn, error) {
c, err := redis.Dial(
viper.GetString("redis.network"),
viper.GetString("redis.address"),
)
if err != nil {
debug.PrintStack()
return c, err
}
return c, nil
}
func InitRedis() error {
return nil
}