Go Redis连接池

官方包 https://github.com/gomodule/redigo

1、创建配置文件

存放在conf配置文件夹,可以跟你的需要存在相应。

redis.go

  1. package conf
  2. var RedisConf = map[string]string{
  3. "name": "redis",
  4. "type": "tcp",
  5. "address": "127.0.0.1:6379",
  6. "auth": "123456",
  7. }

2、redis连接池

redispool.go 连接池实现

  1. package redis
  2. import (
  3. . "example/example/conf" //改成你自己配置目录
  4. "github.com/garyburd/redigo/redis"
  5. "time"
  6. )
  7. var RedisClient *redis.Pool
  8. func init() {
  9. // 建立连接池
  10. RedisClient = &redis.Pool{
  11. // 从配置文件获取maxidle以及maxactive,取不到则用后面的默认值
  12. MaxIdle: 16, //最初的连接数量
  13. // MaxActive:1000000, //最大连接数量
  14. MaxActive: 0, //连接池最大连接数量,不确定可以用0(0表示自动定义),按需分配
  15. IdleTimeout: 300 * time.Second, //连接关闭时间 300秒 (300秒不使用自动关闭)
  16. Dial: func() (redis.Conn, error) { //要连接的redis数据库
  17. c, err := redis.Dial(RedisConf["type"], RedisConf["address"])
  18. if err != nil {
  19. return nil, err
  20. }
  21. if _, err := c.Do("AUTH", RedisConf["auth"]); err != nil {
  22. _=c.Close()
  23. return nil, err
  24. }
  25. return c, nil
  26. },
  27. }
  28. }

使用示例:

  1. package main
  2. import (
  3. "example/example/public/redispool" //改成你自己的redispool.go(redis连接池实现文件)的目录
  4. "fmt"
  5. "github.com/gomodule/redigo/redis"
  6. )
  7. var RedisExpire = 3600 //缓存有效期
  8. func main() {
  9. // 从池里获取连接
  10. rc := redispool.RedisClient.Get()
  11. // 用完后将连接放回连接池
  12. defer rc.Close()
  13. key := "redis.cache"
  14. _, err := rc.Do("Set", key, "1", "EX", RedisExpire)
  15. if err != nil {
  16. fmt.Println(err)
  17. return
  18. }
  19. val, err := redis.String(rc.Do("Get", key))
  20. if err != nil {
  21. fmt.Println(err)
  22. }
  23. fmt.Println(val)
  24. //删除
  25. rc.Do("Del", key)
  26. }

links

  • 目录
  • 上一节:
  • 下一节: