Blame view

common/db/redisproxy/redis.go 2.36 KB
436e0af4   zhangqijia   reactor: dir; Ac...
1
  package redisproxy
cad2b7f3   zhangqijia   reactor: 重构目录, 重构...
2
3
4
  
  import (
  	"github.com/garyburd/redigo/redis"
cad2b7f3   zhangqijia   reactor: 重构目录, 重构...
5
6
  	"time"
  )
101d1cc1   zhangqijia   feat: 一个基于redis的自...
7
  
cad2b7f3   zhangqijia   reactor: 重构目录, 重构...
8
9
  var RedisPool *redis.Pool
  
5d9cf01c   zhangqijia   plugin 热更
10
11
  //conf *conf.ServerConf
  func ConnectRedis(db int, auth, address string) error {
cad2b7f3   zhangqijia   reactor: 重构目录, 重构...
12
13
14
  	RedisPool = &redis.Pool{
  		//最大活跃连接数,0代表无限
  		MaxActive: 888,
101d1cc1   zhangqijia   feat: 一个基于redis的自...
15
  		MaxIdle:   20,
cad2b7f3   zhangqijia   reactor: 重构目录, 重构...
16
17
18
19
  		//闲置连接的超时时间
  		IdleTimeout: time.Second * 100,
  		//定义拨号获得连接的函数
  		Dial: func() (redis.Conn, error) {
5d9cf01c   zhangqijia   plugin 热更
20
21
22
  			option := []redis.DialOption{redis.DialDatabase(db)}
  			if auth != "" {
  				option = append(option, redis.DialPassword(auth))
cad2b7f3   zhangqijia   reactor: 重构目录, 重构...
23
  			}
101d1cc1   zhangqijia   feat: 一个基于redis的自...
24
  			return redis.Dial("tcp", address, option...)
cad2b7f3   zhangqijia   reactor: 重构目录, 重构...
25
26
27
28
29
  		},
  	}
  	return nil
  }
  
101d1cc1   zhangqijia   feat: 一个基于redis的自...
30
  func CloseRedis() {
cad2b7f3   zhangqijia   reactor: 重构目录, 重构...
31
32
33
  	RedisPool.Close()
  }
  
29a163be   zhangqijia   fix: CreateReq ui...
34
  func redisCommand(command string, args ...interface{}) (reply interface{}, err error) {
cad2b7f3   zhangqijia   reactor: 重构目录, 重构...
35
36
  	conn := RedisPool.Get()
  	defer conn.Close()
101d1cc1   zhangqijia   feat: 一个基于redis的自...
37
  	return conn.Do(command, args...)
29a163be   zhangqijia   fix: CreateReq ui...
38
39
  }
  
8f83d322   zhangqijia   redis 管道操作
40
41
42
43
44
  func ExpireKey(key interface{}, ttl interface{}) (reply interface{}, err error) {
  	return redisCommand("expire", key, ttl)
  }
  
  //redis 管道操作
101d1cc1   zhangqijia   feat: 一个基于redis的自...
45
  func PipLine(f func(conn redis.Conn)) {
8f83d322   zhangqijia   redis 管道操作
46
47
48
49
50
  	conn := RedisPool.Get()
  	defer conn.Close()
  	f(conn)
  }
  
101d1cc1   zhangqijia   feat: 一个基于redis的自...
51
  func PipLineTest() {
8f83d322   zhangqijia   redis 管道操作
52
53
54
55
56
57
58
59
60
61
  	PipLine(func(c redis.Conn) {
  		c.Send("SET", "foo", "bar")
  		c.Send("GET", "foo")
  		c.Flush()
  		//receive一次只从结果中拿出一个send的命令进行处理
  		c.Receive()        // reply from SET
  		_, _ = c.Receive() // reply from GET
  	})
  }
  
29a163be   zhangqijia   fix: CreateReq ui...
62
63
64
65
66
67
68
69
70
71
72
73
  func SETNX(args ...interface{}) (reply interface{}, err error) {
  	return redisCommand("SETNX", args...)
  }
  
  func SET(args ...interface{}) (reply interface{}, err error) {
  	return redisCommand("SET", args...)
  }
  
  func GET(args ...interface{}) (reply interface{}, err error) {
  	return redisCommand("GET", args...)
  }
  
15864203   zhangqijia   feat: 增加短信接口
74
75
76
77
  func DEL(args ...interface{}) (reply interface{}, err error) {
  	return redisCommand("DEL", args...)
  }
  
29a163be   zhangqijia   fix: CreateReq ui...
78
79
  func HKEYS(args ...interface{}) (reply interface{}, err error) {
  	return redisCommand("HKEYS", args...)
cad2b7f3   zhangqijia   reactor: 重构目录, 重构...
80
81
  }
  
101d1cc1   zhangqijia   feat: 一个基于redis的自...
82
  func HMSET(args ...interface{}) (reply interface{}, err error) {
29a163be   zhangqijia   fix: CreateReq ui...
83
  	return redisCommand("HMSET", args...)
101d1cc1   zhangqijia   feat: 一个基于redis的自...
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
  }
  
  func HMGET(args ...interface{}) (reply interface{}, err error) {
  	return redisCommand("HMGET", args...)
  }
  
  func HSET(args ...interface{}) (reply interface{}, err error) {
  	return redisCommand("HSET", args...)
  }
  
  func HGET(args ...interface{}) (reply interface{}, err error) {
  	return redisCommand("HGET", args...)
  }
  
  func HINCRBY(args ...interface{}) (reply interface{}, err error) {
  	return redisCommand("HINCRBY", args...)
  }