charpeter01学习redigo
This commit is contained in:
parent
84f74f1e59
commit
f8d9f8c5e2
|
|
@ -15,3 +15,6 @@
|
||||||
# Dependency directories (remove the comment below to include it)
|
# Dependency directories (remove the comment below to include it)
|
||||||
# vendor/
|
# vendor/
|
||||||
|
|
||||||
|
.vscode/
|
||||||
|
go.sum
|
||||||
|
|
||||||
|
|
|
||||||
17
README.md
17
README.md
|
|
@ -1,3 +1,18 @@
|
||||||
# tutorial-redis
|
# tutorial-redis
|
||||||
|
|
||||||
redis技术栈掌握
|
### 概述
|
||||||
|
golang官方推荐的有redisgo和go-reids,个人认为go-redis的封装更加人性化,redisgo的调用是基于命令的,go-redis是基于方法的。
|
||||||
|
|
||||||
|
2行代码来比较下2种资源包的调用方式:
|
||||||
|
redisgo: client.Do("SET", "mykey", "我是数据", "EX", "3600")
|
||||||
|
go-redis:client.Set("mykey", "我是数据", time.Hour)
|
||||||
|
|
||||||
|
同样是存储一个1小时后过期的数据,go-redis的调用方式明显更友好。
|
||||||
|
|
||||||
|
### charpeter01
|
||||||
|
基本使用,其中指令部分与redis-cli一致。
|
||||||
|
github.com/gomodule/redigo/redis
|
||||||
|
|
||||||
|
### charpeter02
|
||||||
|
基本使用
|
||||||
|
https://github.com/go-redis/redis
|
||||||
|
|
@ -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)
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import "fmt"
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
fmt.Println("hello")
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
package conf
|
||||||
|
|
||||||
|
const (
|
||||||
|
Host string = "192.168.8.254:6379"
|
||||||
|
Password string = "Test1231"
|
||||||
|
Database int = 1
|
||||||
|
)
|
||||||
Loading…
Reference in New Issue