• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    go实现redigo的简单操作

    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")
      }
    }
    

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

    您可能感兴趣的文章:
    • 关于redigo中PubSub的一点小坑分析
    上一篇:go如何利用orm简单实现接口分布式锁
    下一篇:详解Go开发Struct转换成map两种方式比较
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    go实现redigo的简单操作 实现,redigo,的,简单,操作,