开发者学堂课程【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 协作的主要接口,可以使用 Dial、DialWithTimeout 或者 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
运行成功