go 使用redis

 

 

 

import (

    redigo "github.com/gomodule/redigo/redis"

)

 

 

func NewPool() *redigo.Pool {
    //return &redigo.Pool{
    //    MaxIdle: 3,
    //    IdleTimeout: 240 * time.Second,
    //    // Dial or DialContext must be set. When both are set, DialContext takes precedence over Dial.
    //    Dial: func () (redigo.Conn, error) { return redigo.Dial("tcp", "localhost",
    //        redigo.DialPassword("123"),
    //        ) },
    //}

    // timeout := time.Duration(20)

    addr := fmt.Sprintf("%s:%s", "127.0.0.1", "6379")

    redisPool := &redigo.Pool{
        MaxIdle:         10,
        MaxActive:       50,
        IdleTimeout:     240 * time.Second,
        Wait:            true,
        MaxConnLifetime: 60 * time.Second,
        Dial: func() (redigo.Conn, error) {
            con, err := redigo.Dial("tcp", addr,
                redigo.DialPassword(""),
                redigo.DialDatabase(0))

            _, err = con.Do("PING")
            return con, err
        },
        TestOnBorrow: func(c redigo.Conn, t time.Time) error {
            if time.Since(t) < time.Minute {
                return nil
            }
            _, err := c.Do("PING")
            if err != nil {
                fmt.Println(err)
            }
            return err
        },
    }

    return redisPool
}

 

 

 

 

 

 

func main() {
    pool := NewPool()
    conn := pool.Get()
    //defer conn.Close()


defer func(conn redigo.Conn) {
err := conn.Close()
if err != nil {
log.Println("conn close err:", err)
}
}(conn)
defer func(pool *redigo.Pool) {
err := pool.Close()
if err != nil {
log.Println("pool close err:", err)
}
}(pool)













s, err :
= conn.Do("LPUSH", "r_list", "tik tok") log.Println(s) if err == nil { log.Println("this is ok") } else { log.Println("this is failed") } }

 

posted @ 2023-01-17 17:51  AngDH  阅读(34)  评论(0编辑  收藏  举报