charpeter01学习redigo

This commit is contained in:
suguo.yao 2021-05-12 17:03:38 +08:00
parent 84f74f1e59
commit f8d9f8c5e2
6 changed files with 94 additions and 1 deletions

3
.gitignore vendored
View File

@ -15,3 +15,6 @@
# Dependency directories (remove the comment below to include it)
# vendor/
.vscode/
go.sum

View File

@ -1,3 +1,18 @@
# tutorial-redis
redis技术栈掌握
### 概述
golang官方推荐的有redisgo和go-reids个人认为go-redis的封装更加人性化redisgo的调用是基于命令的go-redis是基于方法的。
2行代码来比较下2种资源包的调用方式
redisgo client.Do("SET", "mykey", "我是数据", "EX", "3600")
go-redisclient.Set("mykey", "我是数据", time.Hour)
同样是存储一个1小时后过期的数据go-redis的调用方式明显更友好。
### charpeter01
基本使用其中指令部分与redis-cli一致。
github.com/gomodule/redigo/redis
### charpeter02
基本使用
https://github.com/go-redis/redis

56
charpeter01/main.go Normal file
View File

@ -0,0 +1,56 @@
package main
import (
"fmt"
"time"
redigo "github.com/gomodule/redigo/redis"
"myschools.me/suguo/tutorial-redis/conf"
)
func main() {
pool := &redigo.Pool{
Dial: func() (redigo.Conn, error) {
return redigo.Dial("tcp", conf.Host,
redigo.DialDatabase(conf.Database),
redigo.DialPassword(conf.Password),
)
},
TestOnBorrow: func(c redigo.Conn, t time.Time) error {
if time.Since(t) < time.Minute {
return nil
}
_, err := c.Do("PING")
return err
},
MaxIdle: 100,
MaxActive: 100,
IdleTimeout: 60 * time.Second,
Wait: false,
MaxConnLifetime: 0,
}
fmt.Printf("连接数:%d\n", pool.ActiveCount())
conn := pool.Get()
defer conn.Close()
//判断key是否存在
a, _ := conn.Do("EXISTS", "cp01")
i := a.(int64)
fmt.Printf("cp01的key是否存在%d\n", i)
if i > 0 {
data, err := redigo.Bytes(conn.Do("GET", "cp01"))
if err != nil {
fmt.Printf("GET redis错误: %s\n", err.Error())
}
fmt.Printf("cp01内容%s\n", data)
}
//设置一个值单位s
r, err := conn.Do("SETEX", "cp01", 600, []byte("ABCDEFGHIJKLMNOPQRSTUVWXYZ"))
if err != nil {
fmt.Printf("写入redis错误: %s\n", err.Error())
}
fmt.Printf("cp01写入后的返回%v\n", r)
}

7
charpeter02/main.go Normal file
View File

@ -0,0 +1,7 @@
package main
import "fmt"
func main() {
fmt.Println("hello")
}

7
conf/conf.go Normal file
View File

@ -0,0 +1,7 @@
package conf
const (
Host string = "192.168.8.254:6379"
Password string = "Test1231"
Database int = 1
)

5
go.mod Normal file
View File

@ -0,0 +1,5 @@
module myschools.me/suguo/tutorial-redis
go 1.15
require github.com/gomodule/redigo v1.8.4