Go 连接到 Redis | 学习笔记

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 快速学习 Go 连接到 Redis

开发者学堂课程【Go 语言核心编程 - 面向对象、文件、单元测试、反射、TCP 编程Go 连接到 Redis】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/626/detail/9792


Go连接到Redis 

内容介绍

一、安装第三方开源 Redis 库

二、set/get 接口

三、Redis

四、实际操作

 

本节主要讲解通过 Golang 操作 Redis


一、安装第三方开源Redis库

安装原因:要通过 Go 去操作 redis 的 apl

1. 使用第三方开源的 redis 库: github.com/garyburd/redigo/redis

终端操作

cd  d:

D:\

cd  /d  d:

D:\ >cd  goproject

D:\goproject >

go  get  github.com/garyburd/redigo/redis

//没有报错就成功了

2. 在使用Redis前

先安装第三方 Redis 库,在 GOPATH 路径下执行安装指令:

D:\goproject>go get -github.com/garyburd/redigo/redis3

//需要自行查找 GOPATH 路径

3.安装成功后,可以看到相关文件夹

4.特别说明

在安装 Redis 库前,确保已经安装并配置了 Git,因为是从 github 下载安装 Redis 库的,需要使用到 Git。 如果没有安装配置过 Git

5.请参考:如何安装配置 Git

(1)先安装 Git,并配置 Git 的路径(因为 VSCode 需要的插件和第三方库都需要从 GitHub 下载)

(2)安装好后,就配置 Git 的环境变量,并测试 Git 是否安装配置成功

(3)并测试 Git 是否安装配置成功

D:\ goproject > git --version

git version 2.17.1.windows.2


二、set/get 接口

说明:通过 Golong 添加和获取 key-value 【比如 name-tom~】

func main(){

c,err  :=  redis.Dial("tcp", "localhost:6379")

if err  != nil {

fmt.Println("conn  redis  failed,", err) return

}

defer  c.close()

_, err  = c.Do("Set",  "key1"  ,998)

If  err  != nil {

fmt.Println(err)

Return

}

r, err  := redis.Int(c.Do("Get", "key1"))

//Int : 类型转的形式 string 和 flaot

if err  != nil {

fmt.Println("get  key1  failed,", err)

Return

}

fmt.Println(r)


三、Redis

1. 简介

redis(REmote DIctionary Server)是一个 Salvatore Sanfilippo 写 key-value 存储系统,它由 C 语言编写、遵守 BSD协议、支持网络、可基于内存亦可持久化的日志型、 Key-Value 类型的数据库,并提供多种语言的 API。和 Memcached 类似,它支持存储的 value 类型相对更多,包括 string(字符串)、list(链表)、set(集合)、zset(sorted set-.有序集合)和 hash(哈希类型)。这些数据类型都支持 push/pop、add/remove 及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis 支持各种不同方式的排序。与 memcached 一样,为了保证效率,数据都是缓存在内存中。区别的是 redis 会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了 master-slave(主从)同步,redis 在3.0版本推出集群模式。

官方网站:https://redis.io/

2.源码部署

yum install gcc -y #安装C依赖

Wget http://download.redis.io/redis-stable,tar.gz #下载稳定版本

tar zxvf redis-stable.tar.gz #解压

cd redis stable

Make PREFTY= /opt/redis install #指定目录编译

Make instal

3.连接

Conn 接口是与 Redis 协作的主要接口,可以使用 DialDialWithTimeout 或者 NewConn 函数来创建连接,当任务完成时,应用程序必须调用 Close 函数来完成操作。

package main

import(

"github.com/garyburd/redigo/redis"fmt")

func main()  {

conn, err  := redis.Dial("tcp”,10.1210.69:6379”)

if err != nil {

fmt.Println("connect redis error :",err)

return

defer conn.Close()

}

4. redis函数

// Dial connects to the Redis server at the given network and

// address using the specified options.

func Dial(network, address string, options ...Dialoption)  (Conn , error) {

do := dialoptions{

dialer:&net.Dialer{

KeepAlive: time.Minute * 5,

},

}

for_, option := range options {

option.f(&do)

if do.dial == nil {

do.dial =do.dialer.Dial

}

netConn, err :=do.dial(network,address)

if err!=nil {

return nil,err

}

最重要:

func(c *conn) Do(cmd string, args ...interface()) (interface{},error)  {

return c.DoWithTimeout(c.readTimeout ,cmd,args...)

 

四、实际操作

Package main

Import  (

fmt

"github.com/garyburd/redigo/redis"

//引入 redis 包

fun  main()  {

//通过 go 向 redis 写入数据和读取数据

//1.链接到 redis

conn,  err  :=redis.Dial(tcp,  127.0.0.1:6379)

if  err  !=nil {

fmt.Println(redis.Dial  err=,  err)

return

}

fmt.Println(conn succ...,  conn)

}

cd D:\goproject\src\go_code\chapter10\redisdeno\mail

go  run  main.go

运行成功

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
3月前
|
NoSQL Redis 数据库
Redis 连接
10月更文挑战第19天
42 0
|
1月前
|
NoSQL 应用服务中间件 API
Redis是如何建立连接和处理命令的
本文主要讲述 Redis 是如何监听客户端发出的set、get等命令的。
524 23
|
2月前
|
监控 NoSQL 网络协议
【Azure Redis】部署在AKS中的应用,连接Redis高频率出现timeout问题
查看Redis状态,没有任何异常,服务没有更新,Service Load, CPU, Memory, Connect等指标均正常。在排除Redis端问题后,转向了AKS中。 开始调查AKS的网络状态。最终发现每次Redis客户端出现超时问题时,几乎都对应了AKS NAT Gateway的更新事件,而Redis服务端没有任何异常。因此,超时问题很可能是由于NAT Gateway更新事件导致TCP连接被重置。
|
3月前
|
NoSQL 数据可视化 Linux
redis学习四、可视化操作工具链接 centos redis,付费Redis Desktop Manager和免费Another Redis DeskTop Manager下载、安装
本文介绍了Redis的两个可视化管理工具:付费的Redis Desktop Manager和免费的Another Redis DeskTop Manager,包括它们的下载、安装和使用方法,以及在使用Another Redis DeskTop Manager连接Redis时可能遇到的问题和解决方案。
185 1
redis学习四、可视化操作工具链接 centos redis,付费Redis Desktop Manager和免费Another Redis DeskTop Manager下载、安装
|
3月前
|
NoSQL 网络协议 算法
Redis 客户端连接
10月更文挑战第21天
56 1
|
3月前
|
NoSQL Linux Redis
Docker学习二(Centos):Docker安装并运行redis(成功运行)
这篇文章介绍了在CentOS系统上使用Docker安装并运行Redis数据库的详细步骤,包括拉取Redis镜像、创建挂载目录、下载配置文件、修改配置以及使用Docker命令运行Redis容器,并检查运行状态和使用Navicat连接Redis。
466 3
|
3月前
|
NoSQL Java Redis
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
这篇文章介绍了如何使用Spring Boot整合Apache Shiro框架进行后端开发,包括认证和授权流程,并使用Redis存储Token以及MD5加密用户密码。
61 0
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
|
3月前
|
存储 Prometheus NoSQL
大数据-44 Redis 慢查询日志 监视器 慢查询测试学习
大数据-44 Redis 慢查询日志 监视器 慢查询测试学习
44 3
|
3月前
|
NoSQL 关系型数据库 MySQL
Redis 事务特性、原理、具体命令操作全方位诠释 —— 零基础可学习
本文全面阐述了Redis事务的特性、原理、具体命令操作,指出Redis事务具有原子性但不保证一致性、持久性和隔离性,并解释了Redis事务的适用场景和WATCH命令的乐观锁机制。
532 0
Redis 事务特性、原理、具体命令操作全方位诠释 —— 零基础可学习
|
4月前
|
关系型数据库 Go Docker
go连接postgre
go连接postgre