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

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

(0)

相关推荐

  • 关于redigo中PubSub的一点小坑分析

    前言 最近在用 golang 做一些 redis 相关的操作,选用了 redigo 这个第三方库.然后在使用 Pub/Sub 的时候,却发现了一个小坑-- Redis Client 首先,我们来初始化一个带连接池的 Redis Client: import ( "github.com/gomodule/redigo/redis" ) type RedisClient struct { pool *redis.Pool } func NewRedisClient(addr string,

  • 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

  • mysql 5.7.20常用下载、安装和配置方法及简单操作技巧(解压版免安装)

    话说凌晨刚折腾完一台MySQL 5.7.19版本的安装,未曾料到早上MySQL官方就发布了最新的5.7.20版本.这个版本看似更新不多,但是加入了一个我们所急需的功能. MySQL 5.7.20版本新增了参数group-replication-member-weight,用来表示选主时服务器的优先级.若没有这个优先级,则之前版本的MGR会选择一个或许不是用户想要的节点,这是一个令人头疼的问题.相信5.7.20版本新增的该参数能解决一些用户的痛点. 1. 下载: mysql-5.7.20是解压版免

  • php简单操作mysql数据库的类

    本文实例讲述了php简单操作mysql数据库的类.分享给大家供大家参考.具体如下: <?php /** * Database class * * @version: 2.2 * @revised: 27 may 2007 * **/ class Database { var $host; var $name; var $user; var $pass; var $prefix; var $linkId; function Database($mysql) { foreach($mysql as

  • MongoDB快速入门笔记(二)之MongoDB的概念及简单操作

    MongoDB是面向集合的文档式数据库,不像关系数据库那样,有表,列.行,mongoDB数据库则是由一系列的文档组成.下面给大家介绍MongoDB的概念及简单操作. 1.以下列举普通的关系型数据库和MongoDB数据库简单概念上的区别: 2.MongoDB的简单操作 (1)启动MongoDB数据库之后,使用命令mongo,显示如下,默认连接到test数据库. MongoDB shell version: 3.2.6 connecting to: test 使用命令show dbs,可以查看所有的

  • Ubuntu中安装MongoDB及执行一些简单操作笔记

    首先安装MongoDB,在终端输入: 复制代码 代码如下: sudo apt-get install mongodb 然后启动数据库MongoDB: 复制代码 代码如下: mongod 可能会出现这样的错误: 复制代码 代码如下: mongod --help for help and startup options  mongod: symbol lookup error: mongod: undefined symbol: _ZN7pcrecpp2RE4InitEPKcPKNS_10RE_Op

  • JScript实现表格的简单操作

    本文实例为大家分享了JScript实现表格的简单操作,供大家参考,具体内容如下 实现思路: 1.添加时:获取当前列表的行数,在当前一行添加下一行: 2.用insertCell()方法添加一行,下标从0开始, 3.若要给新一行添加类型.响应事件,就用setAttribute()方法,类似于键值对,并用appendChild()方法将数据保存到新一行 4.删除时:获取需要删除行的当前行数this,然后获取父节点,把整一行删掉remove(),而不是单单删除某一行的单个数据 5.修改时:获取当前修改行

  • Java对时间的简单操作实例

    本文实例讲述了Java对时间的简单操作方法.分享给大家供大家参考.具体分析如下: 这里所用的Date指的是java.util.Date. ps:使用java操作时间感觉真真蛋疼,还是我大C#舒服,一个DateTime全部搞定 获取当前时间: 复制代码 代码如下: // 创建一个当前时间的Date对象 Date time = new Date(); 蛋疼的地方,对时间增.减操作: 复制代码 代码如下: // 使用Calendar类对时间增.减操作 Calendar c = Calendar.get

  • oracle表的简单操作步骤

    1.创建表 create table test_1(num number(2) not null,name VARCHAR2(20) not null,primary key(num)); 创建了一个两个字段的表,num和name,都设置为非空,num设为主键,在创建表的时候经常一个"缺失左括号"的错误信息,估计是VARCHAR2类型后面没有加数据长度,加上就好了.这是用sql语句创建表,感觉要比右键新建要麻烦,可能有的时候不得不这样建表. 2.复制表 create table tes

  • PHP实现的简单操作SQLite数据库类与用法示例

    本文实例讲述了PHP实现的简单操作SQLite数据库类与用法.分享给大家供大家参考,具体如下: SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了.它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如Tcl.PHP.Java等,还有ODBC接口,同样比起MySQL.PostgreSQL这两款开源世界著名

  • Python简单操作sqlite3的方法示例

    本文实例讲述了Python简单操作sqlite3的方法.分享给大家供大家参考,具体如下: import sqlite3 def Test1(): #con =sqlite3.connect("D:\\test.db") con =sqlite3.connect(":memory:") #store in memory cur =con.cursor() try: cur.execute('create table score(id integer primary k

随机推荐