You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Let's see how to use the driver that redigo to operate on a database:
19
+
20
+
```Go
21
+
22
+
package main
23
+
24
+
import (
25
+
"fmt"
26
+
"github.com/garyburd/redigo/redis"
27
+
"os"
28
+
"os/signal"
29
+
"syscall"
30
+
"time"
31
+
)
32
+
33
+
var (
34
+
Pool *redis.Pool
35
+
)
36
+
37
+
funcinit() {
38
+
redisHost:=":6379"
39
+
Pool = newPool(redisHost)
40
+
close()
41
+
}
42
+
43
+
funcnewPool(serverstring) *redis.Pool {
44
+
45
+
return &redis.Pool{
46
+
47
+
MaxIdle: 3,
48
+
IdleTimeout: 240 * time.Second,
49
+
50
+
Dial: func() (redis.Conn, error) {
51
+
c, err:= redis.Dial("tcp", server)
52
+
if err != nil {
53
+
returnnil, err
54
+
}
55
+
return c, err
56
+
},
57
+
58
+
TestOnBorrow: func(c redis.Conn, t time.Time) error {
59
+
_, err:= c.Do("PING")
60
+
return err
61
+
},
62
+
}
63
+
}
64
+
65
+
funcclose() {
66
+
c:=make(chan os.Signal, 1)
67
+
signal.Notify(c, os.Interrupt)
68
+
signal.Notify(c, syscall.SIGTERM)
69
+
signal.Notify(c, syscall.SIGKILL)
70
+
gofunc() {
71
+
<-c
72
+
Pool.Close()
73
+
os.Exit(0)
74
+
}()
75
+
}
76
+
77
+
funcGet(keystring) ([]byte, error) {
78
+
79
+
conn:= Pool.Get()
80
+
defer conn.Close()
81
+
82
+
vardata []byte
83
+
data, err:= redis.Bytes(conn.Do("GET", key))
84
+
if err != nil {
85
+
return data, fmt.Errorf("error get key %s: %v", key, err)
86
+
}
87
+
return data, err
88
+
}
89
+
90
+
funcmain() {
91
+
test, err:=Get("test")
92
+
fmt.Println(test, err)
93
+
}
94
+
95
+
```
17
96
18
97
Realicé una bifurcación de el último de estos paquetes, arreglé algunos servicios y lo usé en mi sistema de acortado de urls (2 millones de peticiones por día).
0 commit comments