当前位置: 首页 > news >正文

3. go-zero中如何使用redis

问题

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

仅个人见解,欢迎大家就此问题与我讨论~

相关文章:

  • C#“与AI的奇妙结合”
  • Immutable.js 完全指南:不可变数据的艺术与实践
  • 接口自动化学习五:mock工具使用
  • MyBatis查询语句专题、动态SQL、MyBatis的高级映射及延迟加载
  • Java线程生命周期探秘:六种状态的转换与核心机制
  • 【C语言】内存函数 (续)
  • 模拟算法(一):一维数组模拟
  • HTML零基础入门笔记:狂神版
  • 最短路基础模板题
  • ctfshow VIP题目限免(前10题)
  • Kotlin语言进阶:协程、Flow、Channel详解(二)
  • 在K8S中,内置的污点主要有哪些?
  • 透视表(pivot table)中的某类型数据进行降序排列
  • HTML5
  • 《C++探幽:STL(string类源码的简易实现(上))》
  • 免费送源码:Java+ssm+MySQL 校园二手书销售平台设计与实现 计算机毕业设计原创定制
  • lower_bound 和 upper_bound 是两个强大的二分查找函数
  • Vue基础知识21-30
  • 55.跳跃游戏
  • 《比特城的七重结界:从数据洪流到量子盾牌的终极守护》
  • wordpress主题 四亩田/免费关键词排名优化软件
  • 南阳网站关键词/网络营销发展现状与趋势
  • 怎么查询网站有没有做网站地图/武汉seo创造者
  • 做网站中app客户端/关键词点击排名系统
  • 网站的链接结构包括/网站内容优化方法
  • 富阳做网站洛洛科技/品牌全案营销策划