热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

golang总结-Redis整合

目录1.基本用法2.Redis连接池gogetgithub.comgomoduleredigoredis1.基本用法

目录

  • 1. 基本用法
  • 2. Redis连接池
go get github.com/gomodule/redigo/redis

1. 基本用法

  1. 获取连接
package conn

import (
    "github.com/gomodule/redigo/redis"
    "log"
)

const (
    redis_passwd = ""
    redis_host = ""
    redis_port = ""
    redis_address = "192.168.2.130:6379"
)

func getConn() redis.Conn {
    conn, err := redis.Dial("tcp", redis_address)
    if err != nil {
        log.Println("redis connect err", err)
        panic(err)
    }
    return conn
}
  1. 操作redis
package conn

import (
    "fmt"
    "github.com/gomodule/redigo/redis"
    "log"
)

var c = getConn()

//string 操作

func Set(key string, value interface{}) bool {
    defer c.Close()
    _, err := c.Do("set", key, value)
    if err != nil {
        log.Println("set a value error,", err)
        return false
    }
    return true
}


func Get(key string) string {
    defer c.Close()
    value, err := redis.String(c.Do("get", key))
    if err != nil {
        log.Println("get a value error,", err)
        return ""
    }

    return value
}

func Del(key string) bool {
    defer c.Close()
    _, err := c.Do("del", key)
    if err != nil {
        log.Println("del a key error, ", err)
        return false
    }
    return true
}

//Hash操作
func HashSet(key string, data map[string]interface{}) {
    defer c.Close()
    for k, v := range data {
        _, err := c.Do("hset", key, k, v)
        if err != nil {
            log.Println("hset a error, ", err)
            continue
        }
    }
}

func HashMGet(key string) map[string]interface{} {
    defer c.Close()

    data := make(map[string]interface{})

    reply, err := redis.ByteSlices(c.Do("hgetall", key))
    if err != nil {
        log.Println("hmget error, ", err)
        return nil
    }
    for i, v := range reply {
        fmt.Println(string(v))
        if i % 2 == 0 {
            data[string(v)] = string(reply[i+1])
        }
        continue
    }
    return data

}

2. Redis连接池

package pool

import (
    "github.com/gomodule/redigo/redis"
    "time"
)

var (
    pool *redis.Pool
)

const (
    redis_host = "192.168.2.130:6379"
)

func init() {
    pool = &redis.Pool{
        MaxIdle: 10,
        MaxActive: 0, //0表示没有限制
        IdleTimeout: 1 * time.Second,
        Dial: func() (redis.Conn, error) {
            return redis.Dial("tcp", redis_host)
        },
    }
}

获取连接:conn := pool.Get()


推荐阅读
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • 按照之前我对map的理解,map中的数据应该是有序二叉树的存储顺序,正常的遍历也应该是有序的遍历和输出,但实际试了一下,却发现并非如此,网上查了下,发现从Go1开始,遍历的起始节点就是随机了,当然随机 ... [详细]
  • golang 解析磁力链为 torrent 相关的信息
    其实通过http请求已经获得了种子的信息了,但是传播存储种子好像是违法的,所以就存储些描述信息吧。之前python跑的太慢了。这个go并发不知道写的有没有问题?!packag ... [详细]
  • 看到平台银行对接方案写的demo确实还不错记个笔记互相学习学习packageapiimport(cryptotlsnetnethttpstringssynct ... [详细]
  • 电话号码的字母组合解题思路和代码示例
    本文介绍了力扣题目《电话号码的字母组合》的解题思路和代码示例。通过使用哈希表和递归求解的方法,可以将给定的电话号码转换为对应的字母组合。详细的解题思路和代码示例可以帮助读者更好地理解和实现该题目。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • IhaveconfiguredanactionforaremotenotificationwhenitarrivestomyiOsapp.Iwanttwodiff ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • (三)多表代码生成的实现方法
    本文介绍了一种实现多表代码生成的方法,使用了java代码和org.jeecg框架中的相关类和接口。通过设置主表配置,可以生成父子表的数据模型。 ... [详细]
  • 千万不要错过的后端[纯干货]面试知识点整理 I I
    千万不要错过的后端【纯干货】面试知识点整理IIc++内存管理上次分享整理的面试知识点I,今天我们来继续分享面试知识点整理IIlinuxkernel内核空间、内存管理、进程管理设备、 ... [详细]
  • 使用gin改写“SectionBuildingRESTfulAPIs”第三方包需要提前准备的包有:“gopkg.ingin-gonicgin.v1”“gopkg.inmgo.v2” ... [详细]
  • 认真一点学 Go:18. 并发
    收录于《Go基础系列》,作者:潇洒哥老苗。>>原文链接学到什么并发与并行的区别?什么是Goroutine?什么是通道?Goroutine如何通信?相关函数的使用?sel ... [详细]
  • 本文主要分享【go协程模型】,技术文章【【GORM】模型关系-HasOne】为【VivaPython】投稿,如果你遇到GoWeb相关问题,本文相关知识或能到你。go协程模型一、概述HasO ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • Java自带的观察者模式及实现方法详解
    本文介绍了Java自带的观察者模式,包括Observer和Observable对象的定义和使用方法。通过添加观察者和设置内部标志位,当被观察者中的事件发生变化时,通知观察者对象并执行相应的操作。实现观察者模式非常简单,只需继承Observable类和实现Observer接口即可。详情请参考Java官方api文档。 ... [详细]
author-avatar
似水年华的梦想_818
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有