问题
go-zero项目相关文档中redis是这样配置的:
Name: account.rpc
ListenOn: 0.0.0.0:8080
Etcd:
Hosts:
- 127.0.0.1:2379
Key: account.rpc
Mysql:
Host: xxxx:3306
User: root
Pass: xxx
Data: mall-user
Charset: utf8mb4
Cache:
- Host: 192.168.145.10:6379
Type: node
package config
import (
"github.com/zeromicro/go-zero/core/stores/cache"
"github.com/zeromicro/go-zero/zrpc"
)
type Config struct {
zrpc.RpcServerConf
Mysql struct {
Host string
User string
Pass string
Data string
Charset string
}
CacheRedis cache.CacheConf
}
package svc
import (
"fmt"
"grain-mall/user/model"
"grain-mall/user/rpc/account/internal/config"
"github.com/zeromicro/go-zero/core/stores/sqlx"
)
type ServiceContext struct {
Config config.Config
UserModel model.UserModel
}
func NewServiceContext(c config.Config) *ServiceContext {
DataSource := fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=%s&parseTime=true",
c.Mysql.User, c.Mysql.Pass, c.Mysql.Host, c.Mysql.Data, c.Mysql.Charset)
return &ServiceContext{
Config: c,
UserModel: model.NewUserModel(sqlx.NewMysql(DataSource), c.CacheRedis),
}
}
大部分资料说是UserModel使用了MySQL作为数据库和Redis作为缓存。
model.NewUserModel(…):这是一个函数调用,用于创建一个新的用户模型实例。这个模型通常用于与用户相关的数据操作,例如查询、插入或更新用户信息。
sqlx.NewMysql(DataSource):这部分创建了一个新的MySQL数据库连接,DataSource 是一个字符串,通常包含数据库的连接信息,如主机名、用户名、密码和数据库名等。
c.CacheRedis:这里的 c 是一个上下文对象,CacheRedis 是其中的一个属性,表示Redis的缓存实例。
但是,这个缓存怎么使用?是不是要建立redis连接?
我搜到了一些博客,说是要按照传统方式建立redis连接,但是go-zero不是自带配置Cache以及Cache的操作函数吗?
自定义函数使用上述方法:
func (m *defaultUserReceiveAddressModel)DeleteAddrListCache(uid string) error{
key:= fmt.Sprintf("%s%v", cacheUserReceiveAddressIdPrefix, uid)
return m.DelCache(key)
}
但是上述方法仅适用与简单的string类型的操作,如需使用其他数据结构等,可以参考这篇博文:https://blog.csdn.net/u011019141/article/details/137235129
仅个人见解,欢迎大家就此问题与我讨论~