快乐的事情总是很短的,所以我们用记忆来延长这种感觉在心里面的存在时间。
redis是一种基于内存的存储容器,,他可以用来作为缓存 ,数据库,特点是速度很快,提供了很多常见的数据结构来对数据各种各样的操作。经常用于企业系统的各个方面,是比较常用的框架。
redis在使用上是类似map结构的,都是基于key-value形式的操作,而不同类型的数据结构则体现在value上面,key的类型都是string。
为了使用redis,我们需要下载redis,可以到官网去下载redis,这里我下载的redis5的版本 ,具体的操作可以参考菜鸟教程。
下面来看看go-zero怎么使用redis。
go-zero里面已经包含了集成redis的包,所以我们不需要拉redis的包
然后创建一个项目,用如下命令
goctl api new zeroredis
注意这里的项目名称如果用zero-redis的话,会报命名的错误,所以这里没有加-。
api new command service name not support strikethrough, because this will used by function name
然后在配置文件里面配置redis的连接
Name: zeroredis-api
Host: 0.0.0.0
Port: 8888
# redis
Redis:
Url: localhost:6379
对应的config.go如下
package config
import "github.com/zeromicro/go-zero/rest"
type Config struct {
rest.RestConf
//redis
Redis struct {
Url string
}
}
最后就在main方法里面去操作redis
package main
import (
"flag"
"fmt"
"github.com/zeromicro/go-zero/core/stores/redis"
"github.com/zeromicro/go-zero/rest"
"zeroredis/internal/config"
"zeroredis/internal/handler"
"zeroredis/internal/svc"
"github.com/zeromicro/go-zero/core/conf"
)
var configFile = flag.String("f", "etc/zeroredis-api.yaml", "the config file")
func main() {
flag.Parse()
var c config.Config
conf.MustLoad(*configFile, &c)
server := rest.MustNewServer(c.RestConf)
defer server.Stop()
ctx := svc.NewServiceContext(c)
handler.RegisterHandlers(server, ctx)
fmt.Printf("Starting server at %s:%d...\n", c.Host, c.Port)
fmt.Println("redis config=", c.Redis.Url)
//go-zero里面封装的redis的配置
redisConf := redis.RedisConf{
Host: c.Redis.Url,
Type: "node",
}
//获取操作redis的结构体
op, err := redis.NewRedis(redisConf)
if err != nil {
fmt.Println("redis conn err=%v", err)
}
nameKey := "name"
val := "yu"
//给redis加入一条数据
err = op.Set(nameKey, val)
if err != nil {
fmt.Println("redis set err=%v", err)
}
//根据key获取value
ret, err := op.Get(nameKey)
if err != nil {
fmt.Println("redis get err=%v", err)
}
fmt.Println("ret=", ret)
server.Start()
}
在启动项目之前,需要执行 go mod tidy更新redis的包
注意启动之前需要先启动redis-server,然后可以看到控制台的打印了我们设置进去的值。到此go-zero使用redis就好了。
总结 go-zero使用redis,第一步需要先启动redis-server,这个server就是用来保存数据和获取数据的地方,然后在项目里面配置redis的连接信息,最后就是使用 redis.NewRedis方法获取到redis的操作对象,就可以调用redis提供的各种API了。
