Golang redis(一)redigo安装及简单示例

本文介绍了如何在Golang中使用Redigo库连接并操作Redis。Redigo是官方推荐的Redis客户端,虽然已迁移,但使用方法基本不变。文章通过一个简单的入门程序展示如何发送Redis命令,并解释了DO函数的使用,强调了解Redis命令的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

go 使用redis

go操作redis, 拥有很多第三方包, 官方推荐使用radix 和redigo

在这里插入图片描述

这里选用redigo

注意redigo已经迁移

打开githup :https://github.com/garyburd/redigo

提示如下:
在这里插入图片描述
项目已经迁移到了https://github.com/gomodule/redigo 因此, 我们使用最新的gomodule下的版本,不使用原来的grayburd的版本, 目前国内环境很多能搜索到的资料都还是grayburd版本,其实使用差别不大, 但最好使用最新版本

获取第三方包:

go get github.com/gomodule/redigo/redis

备注: redigo基本都是通过Do发送命令的方式进行实现, 因此要求对redis的命令有一定的了解, 另外也提供Do的超时函数DoWithTimeout


入门程序:

通过入门程序进行介绍, 这样对于redigo首先一个直观的体验:

package main

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

func main() {
	c1, err := redis.Dial("tcp", "127.0.0.1:6379")
	if err != nil {
		log.Fatalln(err)
	}
	defer c1.Close()
	c2, err := redis.DialURL("redis://127.0.0.1:6379")
	if err != nil {
		log.Fatalln(err)
	}
	defer c2.Close()


	rec1, err := c1.Do("Get", "name")
	if rec1 != nil{
		fmt.Printf("---------  ")
		fmt.Println(rec1)
	}

	c2.Send("Get", "name")
	c2.Flush()
	rec2, err := c2.Receive()
	if rec2 != nil{
		fmt.Printf("---------  ")
		fmt.Println(string(rec2.([]byte)))
	}

	resset, err := redis.String(c1.Do("SET", "my_test", "redigo"))
	if err != nil {
		fmt.Println("set err")
	} else {
		fmt.Println(resset)
	}

	//获取value并转成字符串
	account_balance, err := redis.String(c1.Do("GET", "my_test"))
	if err != nil {
		fmt.Println("err while getting:", err)
	} else {
		fmt.Println(account_balance)
	}

	//对已有key设置5s过期时间
	n, err := redis.Int64(c1.Do("Expire", "my_test", 5))
	if err != nil {
		fmt.Println(n)
	} else if n != int64(1) {
		fmt.Println("failed")
	}

	n2, err := redis.Int64(c2.Do("TTL", "my_test"))
	if err != nil {
		fmt.Println(n2)
	} else if n != int64(1) {
		fmt.Print(err)
		fmt.Println("failed")
	}

	//删除key
	res2, err := c1.Do("DEL", "my_test")
	if err != nil {
		fmt.Print(err)
		fmt.Println("del err")
	} else {
		fmt.Println(res2)
	}

}

输出:

OK
redigo
1

执行命令

redis使用redis主要使用DO函数直接发送命令执行, 因此需要堆redis的命令有一定的了解

定义如下:

Do(commandName string, args ...interface{}) (reply interface{}, err error)

commandName 为命令字符串

args 为参数,可以是任意类型, 当然需要时正确的, 否则在执行时会返回失败

返回内容:

reply 为任意类型的参数, err为错误信息

例如: n, err := conn.Do("APPEND", "key", "value")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值