golang MySQL 占内存_golang 基于mysql到内存map的缓存库

golang 基于mysql到内存map的缓存库

背景

很多业务上需要读取db里面的数据详情,这些数据已经存在db,会修改但不会删除,程序为了加速访问需要缓存到内存,业务上也允许内存和db 不一致,设计一个通用的dbcache 由此而来

最佳实践

cache := NewCache(24*time.Hour, 10*time.Minute, 10, 10, "root:test@tcp(127.0.0.1:3306)/test?parseTime=True&loc=Local&multiStatements=true&charset=utf8")

c := Cri{}

cache.RegisterType("cri", &c)

data, err := cache.Get("1", "cri")

fmt.Println(data, err, "=======================")

. 首先new 一个cache

. 需要实现 Model 接口

SqlTemplate() string 返回查询sql 语句模板 UnmarshalField() Model 对象里面有些字段可能不是db直接查出而是序列号而来

. 注册model

func (c *Cache) RegisterType(typeName string, m Model) typeName 为类型名称,m 为实现的model(传指针)

. 获取值

func (c *Cache) Get(k string,typeName) (Model, error) typeName 为类型名称 k 为参数

注意

此cache 返回data为只读,不可修改

mysql 需存在此model 否则会每次穿透db

git 地址 https://github.com/Bulesxz/gocommon/tree/master/dbcache

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值