go实现redigo的简单操作

时间:2021-05-22

golang操作redis主要有两个库,go-redis和redigo。两者操作都比较简单,区别上redigo更像一个client执行各种操作都是通过Do函数去做的,redis-go对函数的封装更好,相比之下redigo操作redis显得有些繁琐。但是官方更推荐redigo,所以项目中我使用了redigo。

1.连接redis

package redisclientimport ( "fmt" redigo "github.com/garyburd/redigo/redis")var pool *redigo.Poolfunc 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 mainimport ( "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") }}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章