欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

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