当前位置: 移动技术网 > IT编程>脚本编程>Go语言 > go实现redigo的简单操作

go实现redigo的简单操作

2018年08月06日  | 移动技术网IT编程  | 我要评论

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

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网