package main import ( "fmt" "redigo-master/redis" ) func main() { conn, err := redis.Dial("tcp", "127.0.0.1:6379") if err != nil { fmt.Println("redis.Dial err=", err) return } fmt.Println("conn suc...", conn) defer conn.Close() // 寫數據 _, err = conn.Do("Set", "name", "allin1314") if err != nil { fmt.Println("redis.write err=", err) return } // 讀數據 data, err := redis.String(conn.Do("Get", "name")) if err != nil { fmt.Println("redis.read err=", err) return } fmt.Println(data) }
Redis鏈接池
Golang操作redis,還可以通過Redis鏈接池:
1)事先初始化一定數量的鏈接,放入到鏈接池
2)當Go需要操作Redis時,直接從Redis鏈接池取出鏈接即可
3)這樣可以節省臨時獲取Redis鏈接的時間,從而提高效率
4)示意圖
代碼:
package main import ( "fmt" "redigo-master/redis" ) var pool *redis.Pool func init() { pool = &redis.Pool{ MaxIdle: 8, MaxActive: 0, IdleTimeout: 100, Dial: func() (redis.Conn, error) { return redis.Dial("tcp", "localhost:6379") }, } } func main() { conn := pool.Get() defer conn.Close() // 寫數據 _, err := conn.Do("Set", "name", "admin123") if err != nil { fmt.Println("redis.write err=", err) return } // 讀數據 data, err := redis.String(conn.Do("Get", "name")) if err != nil { fmt.Println("redis.read err=", err) return } fmt.Println(data) }