Как положть []uint в redis
Пишу код и появилась необходимость записать []uint в redis и потом получать его оттуда.
Но тех инструментов что у меня есть(redis.Get(client *redis.Client) , redis.Set(client *redis.Client)) недостаточно так как они работают только со строками.
Как записать в redis данные типа []uint , если потом нужно доставать именно []uint и отдавать его в ответе пользователю
Можно любые слайсы, не только uint
func Set(client *redis.Client, key string, value string) error {
err := client.Set(key, value, 0).Err()
if err != nil {
log.Fatal(err)
}
return err
}
func rClient() *redis.Client {
client := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
})
return client
}
func Setting(key string, value string) error {
return Set(rClient(), key, value)
}
А Вот такие данные нужно записать в redis
package main
import (
"net/http"
"github.com/gin-gonic/gin"
)
type Result struct {
Res []uint `json:"res"`
}
type Values struct {
A int `json:"a"`
B int `json:"b"`
}
func fib(n int) uint {
var a, b uint = 1, 1
for i := 0; i < n; i++ {
a, b = b, a+b
}
return a
}
type fibfunc func(int) uint
func ReturnSlce(fib fibfunc, a, b int) []uint {
slc := make([]uint, 0, b-a+1)
for i := a; i < b; i++ {
slc = append(slc, fib(i))
}
return slc
}
func postValues(c *gin.Context) {
var vals Values
c.BindJSON(&vals)
var res = Result{
Res: ReturnSlce(fib, vals.A, vals.B), //res.Res нужно записать в redis
}
c.IndentedJSON(http.StatusOK, res)
}
Все что мне пришло на ум, это использовать имеющиеся у меня инструменты работы с redis и каждый элемент uint приводить к string и итерировать в переменную string. Потом эту переменную string класть в redis и когда нужно доставать оттуда. Нет ниакаой трубности пложить туда строку, но когда я ее оттуда достаю, то плучаю кашу в выводе и невозможно больше использоваться как int или uint
Ответы (1 шт):
по итогу сделал как предложил Pak Uula. Код залил в репозиторий. Все получилось и сервер отвечает на запросы из кэша. Чтобы не засорять здесь вопрос букавами предлагаю посмотреть мой репозиторий. Если такое решение подходит для кэширования, прошу вас написать под ответом свое мнение и я отмечу вопрос как верный.
Если вы видите что я неправильно понял кэш и то что я сделал это не кэширование, то, пожалуйста напишите мне, я исправлю код. Я только сейчас изучаю работу с redis и мог что-то не так понять.
Если что то не так то пинайте