123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- package util
- import (
- "fmt"
- "io"
- "sync"
- "time"
- "xiaoniaokuaiyan.com/xiaoniao/config"
- "gopkg.in/redis.v2"
- )
- var redisInstance *redis.Client
- var redisOnce sync.Once
- func GetRedis() *redis.Client {
- redisOnce.Do(func() {
- var (
- dsec = config.IniConf.Section("database")
- host = dsec.Key("redis.host").Value()
- port = dsec.Key("redis.port").Value()
- )
- var redisOptions *redis.Options = &redis.Options{
- Addr: fmt.Sprintf("%s:%s", host, port),
- //Addr: "101.201.196.166:6379",
- }
- redisInstance = redis.NewTCPClient(redisOptions)
- })
- var password = config.IniConf.Section("database").Key("redis.password").Value()
- //password:="xn9659$"
- cmdStatus := redisInstance.Auth(password)
- if cmdStatus.Err() == io.EOF {
- //fmt.Println(cmdStatus.Err())
- redisInstance.Ping()
- redisInstance.Auth(password)
- }
- return redisInstance
- }
- func GetRedisValue(key string) (string, error) {
- client := GetRedis()
- client.Select(12)
- strCmd := client.Get(key)
- if err := strCmd.Err(); err != nil {
- return "", err
- }
- return strCmd.Val(), nil
- }
- func SetRedisValue(key, val string, period int64) (bool, error) {
- client := GetRedis()
- client.Select(12)
- statusCmd := client.Set(key, val)
- if err := statusCmd.Err(); err != nil {
- return false, err
- }
- if int64(period) > 0 {
- client.Expire(key, time.Duration(period))
- }
- return true, nil
- }
- func SetLock(key string) error {
- client := GetRedis()
- cmd := client.SetNX(key, "1")
- if !cmd.Val() || cmd.Err() != nil {
- //log.Println(cmd.Err())
- return fmt.Errorf("redis error")
- }
- client.Expire(key, time.Second*3)
- return nil
- }
- func DelLock(key string) {
- client := GetRedis()
- client.Del(key)
- }
|