long blogs

进一步有进一步惊喜


  • Home
  • Archive
  • Tags
  •  

© 2025 long

Theme Typography by Makito

Proudly published with Hexo

go-redis

Posted at 2020-06-21 golang 

引入核心包

1
2
3
4
5
6
7
import (
"context"
"encoding/json"
"fmt"
"github.com/go-redis/redis"
"time"
)
设置全局连接变量
1
2
3
// 全局redis连接变量
var rdb *redis.Client
var ctx = context.Background()

初始化redis连接

1
2
3
4
5
6
7
8
9
10
11
12
13
func initClient() error {
rdb = redis.NewClient(&redis.Options{
Addr: "localhost:6379", // redis地址
Password: "password", // redis密码
DB: 0, // redis数据库编号
})
// ping连接
_,err := rdb.Ping(ctx).Result()
if err != nil {
return err
}
return nil
}

GetDemo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
func setDemo() {
val := struct {
Name string `json:"name"`
Age int `json:"age" `
}{"Tom",12}

str,err := json.Marshal(val)
if err != nil {
return
}
fmt.Println("待序列化数据:",str)
err = rdb.Set(ctx,"mykey",str ,0).Err()
if err != nil {
fmt.Println("设置错误",err)
}
}
1
2
3
4
5
6
7
func setDemo2()  {
// 设置3秒过期
err := rdb.Set(ctx,"key2","hello world",3*time.Second).Err()
if err != nil {
fmt.Println("设置值错误,err = ",err)
}
}

GetDemo

1
2
3
4
5
6
7
8
func getDemo() {
val,err := rdb.Get(ctx,"mykey").Result()
if err != nil {
fmt.Println("获得数据失败")
return
}
fmt.Println("mykey = ",val)
}
1
2
3
4
5
6
7
8
func getDemo2()  {
val,err := rdb.Get(ctx,"key2").Result()
if err != nil {
fmt.Println("获得数据失败",err)
return
}
fmt.Println("key2 = ",val)
}

测试

1
2
3
4
5
6
7
8
9
10
11
12
13
func main() {
// 初始化
initClient()
// 第一组测试
setDemo()
getDemo()
// 第二组测试
setDemo2()
getDemo2()
// 等待4秒后再次获得
time.Sleep(4*time.Second)
getDemo2()
}
结果
1
2
3
4
待序列化数据: [123 34 110 97 109 101 34 58 34 84 111 109 34 44 34 97 103 101 34 58 49 50 125]
mykey = {"name":"Tom","age":12}
key2 = hello world
获得数据失败 redis: nil

Share 

 Previous post: go-rpc Next post: go-mysql 

© 2025 long

Theme Typography by Makito

Proudly published with Hexo