为了账号安全,请及时绑定邮箱和手机立即绑定

golang 从缓存中返回

golang 从缓存中返回

Go
杨__羊羊 2022-06-13 17:20:23
我的响应时间大约是3秒,所以我想减少响应时间。我认为的第一件事是从缓存返回,但我找不到任何框架或解释。我怎样才能实现它或者是否有任何替代解决方案?我应该使用这个框架: https ://github.com/mediocregopher/radix.v2我正在使用postgresqlfor db 并在 for 循环中调用此代码:err := GetDB().Table("table_name").Find(&words).Error
查看完整描述

1 回答

?
慕的地10843

TA贡献1785条经验 获得超8个赞

您的问题过于宽泛,但基于上面的讨论,我相信您要做的是从将在您的程序中使用的数据库中加载某种静态数据,并且不需要刷新。在这种情况下,当您连接数据库一次时加载数据并将其保存在包下的全局变量中是有意义的。例如:


package model


var SomeData []SomeType

package main


func main() {

  // Load data from the db

  model.SomeData = loadedData

  // Start the program...  

}

这假设model.SomeData在程序期间不会改变。例如,如果您需要定期重新加载它,则程序的更好结构是:


package model


var someData []SomeType

var someDataLock sync.RWMutex


func GetData() []SomeType {

   someDataLock.RLock()

   defer someDataLock.RUnlock()

   return someData

}


func SetData(in []SomeType) {

   someDataLock.Lock()

   defer someDataLock.Unlock()

   someData=in

}

然后你model.SetData用来设置数据,并model.GetData以线程安全的方式获取数据。


查看完整回答
反对 回复 2022-06-13
  • 1 回答
  • 0 关注
  • 145 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号