Как использовать Redis в качестве базы данных для проектов Golang

Redis — это сокращение от удаленного сервера словарей. Это хранилище структур данных в памяти, которое поддерживает списки, строки, карты, потоки, наборы и другие структуры для хранения абстрактных данных.

Хотя Redis — это полноценная первичная база данных, это NoSQL. Это одно из самых популярных решений NoSQL и одна из самых популярных баз данных типа «ключ-значение». Чаще всего Redis используется для кеширования сессий, кеша страниц, очереди сообщений.

По сути, эта база данных лучше всего подходит для кеша, поскольку она позволяет вам настроить, как долго она должна хранить данные и какие данные стирать в первую очередь. Также известно, что Redis является быстрым и высокопроизводительным, что делает его идеальным для задач кэширования.

Прежде чем подключаться к базе данных Redis, убедитесь, что на вашем Mac установлены Redis и Go. Вы можете использовать Docker-образ Redis вместо Redis непосредственно на своем компьютере, если хотите.

Вам также потребуется установить go-redisклиент Redis для Go.

Начните с инициализации модуля Go с помощью этой команды:

перейти мод инициализировать github.com/my/repo

Затем установите go-redis, один из двух самых популярных пакетов для взаимодействия с Redis в Golang:

зайди на github.com/go-redis/redis/v8

Подключение к базе данных Redis

Начните с того, что убедитесь, что ваш контейнер Docker Redis запущен:

База данных Redis

Если нет, запустите контейнер Redis Docker:

docker run -d -p 6379:6379 redislabs/redismod

Теперь мы можем включить наш код для установки go-redis из предыдущего шага в наш процесс:

зайди на github.com/go-redis/redis/v8

Перед нашим последним шагом нам нужно создать файл main.go с нашей реальной программой. Мы использовали следующий код:

package main import (“fmt” “github.com/go-redis/redis” ) func main() { fmt.Println(“Мы тестируем Go-Redis”) client := redis.NewClient(&redis.Options{ Addr: “localhost:6379”, пароль: “”, DB: 0, }) pong, err := client.Ping().Result() fmt.Println(pong, err) }

Для написания нашей программы Go мы использовали CodeRunner, приложение для молниеносного кодирования на более чем 25 языках, включая Go.

Кодраннер для разработчиков

Вы можете использовать CodeRunner или другое приложение-редактор.

Измените свой каталог в Терминале с помощью команды cd, чтобы он находился в той же папке, что и ваш файл main.go из предыдущего шага, а затем запустите Go, чтобы запустить файл, чтобы установить соединение с иди беги main.go команда.

Вы должны получить ответ PONG, если соединение установлено успешно:

ПОНГ-ответ

Взаимодействие с базами данных Redis

Основы взаимодействия с базой данных Redis вращаются вокруг установлен а также получить команды.

Вот код для установки значения в базе данных Redis:

err = client.Set(“name”, “Billie”, 0).Err() if err != nil { fmt.Println(err) }

Чтобы убедиться, что вы все делаете правильно, вы также можете включить получить код в вашу программу и получите значение, которое вы только что добавили, распечатав обратно.

Вот полный код, который мы использовали для этого действия в нашей программе Go:

package main import (“fmt” “github.com/go-redis/redis” ) func main() { fmt.Println(“Мы тестируем Go-Redis”) client := redis.NewClient(&redis.Options{ Addr: “localhost:6379”, пароль: “”, DB: 0, }) pong, err := client.Ping().Result() fmt.Println(pong, err) if err != nil {return} err = client .Set(“имя”, “Билли”, 0).Err() если ошибка != nil { fmt.Println(err) return } val, err := client.Get(“имя”).Result() если ошибка != ноль { fmt.Println(ошибка) } fmt.Println(val) }

Чтобы сохранить фрагменты кода на потом, вы можете использовать SnippetsLab, приложение, разработанное специально для этой задачи. Вы можете хранить свои биты кода там для быстрого доступа, когда они вам понадобятся:

код snoops

Вы также можете сохранить их в виде простых текстовых файлов, но мы предпочитаем, чтобы SnippetsLab мог лучше структурировать наши фрагменты.

Также убедитесь, что вы храните примеры кода, так как иногда, когда вы их изменяете, можно непреднамеренно включить ошибку — и хорошо иметь оригинальную ссылку, которая работала до того, как вы ее подправили.

Установка срока действия для значений Redis DB

Одной из наиболее ценных функций базы данных Redis в памяти является то, что она позволяет хранить ваши значения с датой истечения срока действия. В приведенных выше примерах мы использовали 0, чтобы не устанавливать продолжительность хранения установленного значения, но что происходит, когда мы это делаем?

Вот соответствующая строка кода для этого:

err = client.Set(“name”, “Tom”, time.Second*5).Err()

Как мы можем проверить, что значение действительно истекает в установленный нами период времени? Есть несколько способов сделать это, но в нашем примере проще всего проверить это с помощью этой строки кода:

время.Сон(время.Секунда*6)

Это позволяет нам попросить нашу программу подождать определенное время, прежде чем получить заданное значение. Если мы установим время менее 5 секунд, мы получим Том назад. Но когда время больше этого, мы ничего не получаем:

package main import (“fmt” “github.com/go-redis/redis” “time” ) func main() { fmt.Println(“Мы тестируем Go-Redis”) client := redis.NewClient(&redis.Options { Адрес: “localhost:6379”, Пароль: “”, БД: 0, }) pong, err := client.Ping().Result() fmt.Println(pong, err) if err != nil {return} err = client.Set(“name”, “Tom”, time.Second*5).Err() if err != nil { fmt.Println(err) return } time.Sleep(time.Second*4) val, err := client.Get(“name”).Result() if err != nil { fmt.Println(err) } fmt.Println(val) }

Время окончания срока действия

Здесь мы запустили наш файл main.go со временем истечения, установленным на 4 секунды, а затем переключили его на 6. Таким образом, в ответ на наш первый запуск main.go мы получили имя, которое мы установили — Том — обратно к нам, но во второй раз, когда мы запустили его, мы получили только ноль.

Использование JSON с Redis

Для хранения составных значений мы можем использовать JSON в нашем коде:

пакет main import (“fmt” “encoding/json” “github.com/go-redis/redis” ) type Author struct { Name string `json:”name”` Age int `json:”age”` } func main( ) { client := redis.NewClient(&redis.Options{Addr: “localhost:6379”, Password: “”, DB: 0, }) json, err := json.Marshal(Author{Name: “Ben”, Age : 85}) if err != nil { fmt.Println(err) } err = client.Set(“id4”, json, 0).Err() if err != nil { fmt.Println(err) } val, err := client.Get(“id4”).Result() if err != nil { fmt.Println(err) } fmt.Println(val) }

С помощью этого кода мы смогли сохранить составное значение имени и возраста в нашей базе данных Redis:

составные значения

Последние мысли

Как видите, работать с Redis в Go очень просто — все, что вам нужно, это установить соединение и начать устанавливать свои значения.

Базы данных Redis отлично подходят для хранения информации с датой истечения срока действия, что является одной из основных причин, по которой одно из основных применений — кэширование и хранение сообщений. При необходимости вы можете включить в свои проекты несколько баз данных Redis.

В приведенном выше руководстве вы узнали, как установить срок действия для ваших значений и проверить, работают ли они, а также об использовании JSON с вашими базами данных Redis.

Приложения, которые мы использовали в нашем руководстве — CodeRunner и SnippetsLab — доступны в Setapp, сервисе с тщательно подобранной коллекцией инструментов повышения производительности для ваших устройств Mac и iOS.

Просмотрите тщательно подобранные коллекции тематических приложений Setapp для различных повседневных задач на Mac или iPhone, выберите инструменты, которые вы хотели бы использовать, и опробуйте их все в рамках одной подписки. Храните наиболее часто используемые из них на своих устройствах все время и получайте те, которые вам нужны только время от времени, когда у вас есть задача, которую нужно решить.

Попробуйте Setapp с нашей бесплатной 7-дневной пробной версией прямо сейчас и изучите все инструменты, доступные в нашем ассортименте!

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *