golang возврат из кеша - PullRequest
0 голосов
/ 13 июля 2020

Мое время ответа составляет около 3 секунды, поэтому я хочу уменьшить время ответа. Первое, что я думаю, это возвращение из кеша, но я не смог найти никакой структуры или объяснения по этому поводу. Как я могу этого добиться или есть какое-либо альтернативное решение?

Следует ли мне использовать эту структуру: https://github.com/mediocregopher/radix.v2

Я использую postgresql для db и in для l oop Я называю этот код:

err := GetDB().Table("table_name").Find(&words).Error

1 Ответ

2 голосов
/ 13 июля 2020

Ваш вопрос слишком общий, но, судя по приведенному выше обсуждению, я считаю, что вы пытаетесь загрузить какие-то данные c stati * из базы данных, которая будет использоваться в вашей программе, а это не так. нужно обновить. В этом случае имеет смысл загрузить данные при однократном подключении к базе данных и сохранить их в глобальной переменной в пакете. Например:

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 для получения данных в потокобезопасный способ.

...