go实现redigo的简单操作
程序员文章站
2022-11-05 23:41:10
golang操作redis主要有两个库,go-redis和redigo。两者操作都比较简单,区别上redigo更像一个client执行各种操作都是通过do函数去做的,red...
golang操作redis主要有两个库,go-redis和redigo。两者操作都比较简单,区别上redigo更像一个client执行各种操作都是通过do函数去做的,redis-go对函数的封装更好,相比之下redigo操作redis显得有些繁琐。但是官方更推荐redigo,所以项目中我使用了redigo。
1.连接redis
package redisclient import ( "fmt" redigo "github.com/garyburd/redigo/redis" ) var pool *redigo.pool func init() { redis_host := "127.0.0.1" redis_port := 6379 pool_size := 20 pool = redigo.newpool(func() (redigo.conn, error) { c, err := redigo.dial("tcp", fmt.sprintf("%s:%d", redis_host, redis_port)) if err != nil { return nil, err } return c, nil }, pool_size) } func get() redigo.conn { return pool.get() }
之后我们调用redisclient包中的.get()就可以生成一个redis连接池对象来操作redis
2.操作redis
package main import ( "redisclient" "logger" "github.com/garyburd/redigo/redis" ) func main() { c := redisclient.get() //记得销毁本次链连接 defer c.close() //写入数据 _, err := c.do("set", "go_key", "redigo") if err != nil { logger.runtime().info(map[string]interface{}{"error": err}, "error while setting") } //判断key是否存在 is_key_exit, err := redis.bool(c.do("exists", "go_key")) if err != nil { logger.runtime().info(map[string]interface{}{"error": err}, "error while existing") } //获取value并转成字符串 account_balance, err := redis.string(c.do("get", "go_key")) if err != nil { logger.runtime().info(map[string]interface{}{"error": err}, "error while getting") } //删除key _, err = c.do("del", "go_key") if err != nil { logger.runtime().info(map[string]interface{}{"error": err}, "error while deleting") } //设置key过期时间 _, err = c.do("set", "mykey", "superwang", "ex", "5") if err != nil { fmt.println("redis set failed:", err) } //创建key时设置5s过期 _, err := c.do("set", "go_key:ex", "redigo", "ex", 5) if err != nil { logger.runtime().info(map[string]interface{}{"error": err}, "error while setting") } //对已有key设置5s过期时间 n, err := rs.do("expire", "go_key", 5) if err != nil { logger.runtime().info(map[string]interface{}{"error": err}, "error while setting") } else if n != int64(1) { fmt.println("failed") } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。