安装go-redis 三方库为我们封装了很多函数来执行 redis 命令,而 redigo 三方库只有一个 do 函数执行 redis 命令,更接近使用 redis-cli 操作 redis。
go-redis 支持连接哨兵及集群模式的redis
go get github.com/gomodule/redigogo get github.com/go-redis/redis/v8
链接redisfunc main() { c, err := redis.dial("tcp", "localhost:6379") if err != nil { fmt.println("conn redis failed,", err) return } fmt.println("redis conn success") defer c.close()}
string类型操作func main() { c, err := redis.dial("tcp", "localhost:6379") if err != nil { fmt.println("conn redis failed,", err) return } defer c.close() _, err = c.do("set", "abc", 100) if err != nil { fmt.println(err) return } r, err := redis.int(c.do("get", "abc")) if err != nil { fmt.println("get abc failed,", err) return } fmt.println(r)}
func main() { c, err := redis.dial("tcp", "localhost:6379") if err != nil { fmt.println("conn redis failed,", err) return } defer c.close() _, err = c.do("mset", "abc", 100, "efg", 300) if err != nil { fmt.println(err) return } r, err := redis.ints(c.do("mget", "abc", "efg")) if err != nil { fmt.println("get abc failed,", err) return } for _, v := range r { fmt.println(v) }}
设置过期时间func main() { c, err := redis.dial("tcp", "localhost:6379") if err != nil { fmt.println("conn redis failed,", err) return } defer c.close() _, err = c.do("expire", "abc", 10) if err != nil { fmt.println(err) return }}----------------------------或者这样也行do, err := client.do("set", "name", "1111","ex",5)
list操作func main() { c, err := redis.dial("tcp", "localhost:6379") if err != nil { fmt.println("conn redis failed,", err) return } defer c.close() _, err = c.do("lpush", "book_list", "abc", "ceg", 300) if err != nil { fmt.println(err) return } r, err := redis.string(c.do("lpop", "book_list")) if err != nil { fmt.println("get abc failed,", err) return } fmt.println(r)}
hash表func main() { c, err := redis.dial("tcp", "localhost:6379") if err != nil { fmt.println("conn redis failed,", err) return } defer c.close() _, err = c.do("hset", "books", "abc", 100) if err != nil { fmt.println(err) return } r, err := redis.int(c.do("hget", "books", "abc")) if err != nil { fmt.println("get abc failed,", err) return } fmt.println(r)}
redis连接池var pool *redis.pool //创建redis连接池func init(){ pool = &redis.pool{ //实例化一个连接池 maxidle:16, //最初的连接数量 // maxactive:1000000, //最大连接数量 maxactive:0, //连接池最大连接数量,不确定可以用0(0表示自动定义),按需分配 idletimeout:300, //连接关闭时间 300秒 (300秒不使用自动关闭) dial: func() (redis.conn ,error){ //要连接的redis数据库 return redis.dial("tcp","localhost:6379") }, }}func main(){ c := pool.get() //从连接池,取一个链接 defer c.close() //函数运行结束 ,把连接放回连接池 _,err := c.do("set","abc",200) if err != nil { fmt.println(err) return } r,err := redis.int(c.do("get","abc")) if err != nil { fmt.println("get abc faild :",err) return } fmt.println(r) pool.close() //关闭连接池}
以上就是go redis之redigo如何使用的详细内容。