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

1.连接redis

  1. package redisclient
  2.  
  3. import (
  4. "fmt"
  5. redigo "github.com/garyburd/redigo/redis"
  6. )
  7.  
  8. var pool *redigo.Pool
  9.  
  10. func init() {
  11. redis_host := "127.0.0.1"
  12. redis_port := 6379
  13. pool_size := 20
  14. pool = redigo.NewPool(func() (redigo.Conn, error) {
  15. c, err := redigo.Dial("tcp", fmt.Sprintf("%s:%d", redis_host, redis_port))
  16. if err != nil {
  17. return nil, err
  18. }
  19. return c, nil
  20. }, pool_size)
  21. }
  22.  
  23. func Get() redigo.Conn {
  24. return pool.Get()
  25. }

之后我们调用redisclient包中的.Get()就可以生成一个redis连接池对象来操作redis

2.操作redis

  1. package main
  2.  
  3. import (
  4. "fmt"
  5. "redisclient"
  6. "github.com/garyburd/redigo/redis"
  7. )
  8.  
  9. func main() {
  10. c := redisclient.Get()
  11.  
  12. //记得销毁本次链连接
  13. defer c.Close()
  14.  
  15. //写入数据
  16. _, err := c.Do("SET", "go_key", "redigo")
  17. if err != nil {
  18. fmt.Println("err while setting:", err)
  19. }
  20.  
  21. //判断key是否存在
  22. is_key_exit, err := redis.Bool(c.Do("EXISTS", "go_key"))
  23. if err != nil {
  24. fmt.Println("err while checking keys:", err)
  25. } else {
  26. fmt.Println(is_key_exit)
  27. }
  28.  
  29. //获取value并转成字符串
  30. account_balance, err := redis.String(c.Do("GET", "go_key"))
  31. if err != nil {
  32. fmt.Println("err while getting:", err)
  33. } else {
  34. fmt.Println(account_balance)
  35. }
  36.  
  37. //删除key
  38. _, err = c.Do("DEL", "go_key")
  39. if err != nil {
  40. fmt.Println("err while deleting:", err)
  41. }
  42.  
  43. //设置key过期时间
  44. _, err = c.Do("SET", "mykey", "superWang", "EX", "5")
  45. if err != nil {
  46. fmt.Println("err while setting:", err)
  47. }
  48.  
  49. //对已有key设置5s过期时间
  50. n, err := c.Do("EXPIRE", "go_key", 5)
  51. if err != nil {
  52. fmt.Println("err while expiring:", err)
  53. } else if n != int64(1) {
  54. fmt.Println("failed")
  55. }
  56. }

  

希望对大家有所帮助~

go redigo的简单操作的更多相关文章

  1. x01.MagicCube: 简单操作

    看最强大脑,发现魔方还是比较好玩的,便买了一个,对照七步还原法,居然也能成功还原. 为什么不写一个魔方程序呢?在网上找了找,略作修改,进行简单操作,还是不错的,其操作代码如下: protected o ...

  2. js简单操作Cookie

    贴一段js简单操作Cookie的代码: //获取指定名称的cookie的值 function getCookie(objName) { var arrStr = document.cookie.spl ...

  3. GitHub学习心得之 简单操作

    作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 前言 本文对Github的基本操作进行了总结, 主要基于以下文章: http://gitre ...

  4. Linq对XML的简单操作

    前两章介绍了关于Linq创建.解析SOAP格式的XML,在实际运用中,可能会对xml进行一些其它的操作,比如基础的增删该查,而操作对象首先需要获取对象,针对于DOM操作来说,Linq确实方便了不少,如 ...

  5. Linux 中 Vi 编辑器的简单操作

    Linux 中 Vi 编辑器的简单操作 Vi 编辑器一共有3种模式:命名模式(默认),尾行模式,编辑模式.3种模式彼此需要切换. 一.进入 Vi 编辑器的的命令 vi  filename //打开或新 ...

  6. python(pymysql)之mysql简单操作

    一.mysql简单介绍 说到数据库,我们大多想到的是关系型数据库,比如mysql.oracle.sqlserver等等,这些数据库软件在windows上安装都非常的方便,在Linux上如果要安装数据库 ...

  7. ZooKeeper系列3:ZooKeeper命令、命令行工具及简单操作

    问题导读1.ZooKeeper包含哪些常用命令?2.通过什么命令可以列出服务器 watch 的详细信息?3.ZooKeeper包含哪些操作?4.ZooKeeper如何创建zookeeper? 常用命令 ...

  8. ORACLE的安装与网页版创建表空间的简单操作以及PLsql的简单操作

    1.oracle的安装: 安装简单易学,在这里不做解释.下载看装包后耐心等待,注意安装目录不要有中文字符,尽量按照指定目录进行安装.安装完成后会占用有大约5g的内存. 如果要卸载oracle,需要用其 ...

  9. C#反射技术的简单操作(读取和设置类的属性)

    public class A { public int Property1 { get; set; } } static void Main(){ A aa = new A(); Type type ...

随机推荐

  1. MiseringThread.java 解析页面线程

    MiseringThread.java 解析页面线程 http://injavawetrust.iteye.com package com.iteye.injavawetrust.miner; imp ...

  2. 大多数时候是软件的Bug,但是... 有时候的确是硬件的问题!

    在我们性能最好的服务器中,有一台是从之前的64位测试项目中遗留下来的.那台机器配有皓龙250双核处理器,内存有8 GB.服役了一年之后,那种配置仍然是相当不错的.它还有贴心的升级方案可选:它的泰安Th ...

  3. Swift基础之UITableView(之前写的知识点都是最新的2.2版本样式,欢迎大家参考,可以相互交流)

    //这里只是列举了经常使用的UITableView的属性和方法,其他的都可以类似使用,注意用法即可     //设置全局变量UITableView     var myTableView = UITa ...

  4. 轻量级网络库libevent概况

    Libevent is a library for writing fast portable nonblocking IO. libevent是一个为编写快速可移植的非阻塞IO程序而设计的. lib ...

  5. 地产IT人福利:帆软地产BI解决方案全解析

    解决方案下载地址 帆软大型地产集团项目解决方案 下载地址:http://pan.baidu.com/s/1pJGeqKF帆软地产BI解决方案之KPI考核系统 下载地址:http://pan.baidu ...

  6. Cocoa公历和中国农历直接的转换

    看过某书上面的做法是先生成一个公历的calendar,使用的是: NSCalendar *cal = [NSCalendar currentCalendar]; 然后用它生成一个NSDateCompo ...

  7. LeetCode之旅(18)-Happy Number

    题目 Write an algorithm to determine if a number is "happy". A happy number is a number defi ...

  8. LeetCode(36)- Implement Stack using Queues

    题目: Implement the following operations of a stack using queues. push(x) -- Push element x onto stack ...

  9. asp.net core中写入自定义中间件

    首先要明确什么是中间件?微软官方解释:https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/middleware/?tabs=aspnet ...

  10. java学习日记-基础-列出2~100内的素数

    素数的概念:一个整数如果只能整除1和它本身,那么这个整数就是一个素数 方法一:素数是除去能被2整除.3整除.5整除.7整除的整数,但包含2,3,5,7 public class Sushu { pub ...