Какие основные команды Redis используются в бэкенд-разработке?

Ответ

Redis — это высокопроизводительная in-memory база данных типа «ключ-значение», которая поддерживает различные структуры данных. Основные команды группируются по типам данных, с которыми они работают:

  • Строки (Strings):

    • SET key value / GET key — Установка и получение строкового значения.
    • INCR key / DECR key — Атомарное увеличение/уменьшение числовых значений.
  • Хэши (Hashes):

    • HSET name field value / HGET name field — Работа с полями внутри хэш-таблицы (аналог объекта).
    • HGETALL name — Получение всех полей и значений хэша.
  • Списки (Lists):

    • LPUSH key value / RPOP key — Добавление элемента в начало списка и извлечение с конца (реализация очереди).
  • Множества (Sets):

    • SADD key member / SMEMBERS key — Работа с неупорядоченными множествами уникальных элементов.
  • Сортированные множества (Sorted Sets):

    • ZADD key score member / ZRANGE key start stop — Работа с множествами, где каждый элемент имеет свой вес (score) для сортировки.
  • Управление ключами:

    • EXPIRE key seconds / TTL key — Установка времени жизни ключа и проверка оставшегося времени.
    • DEL key — Удаление ключа.
  • Pub/Sub:

    • PUBLISH channel message / SUBSCRIBE channel — Реализация механизма публикации-подписки для обмена сообщениями.

Пример использования в Go с библиотекой go-redis:

client := redis.NewClient(&redis.Options{
    Addr: "localhost:6379",
})

// Установка значения с временем жизни 1 час
err := client.Set(ctx, "user:1", "some-data", time.Hour).Err()
if err != nil {
    log.Fatal(err)
}

// Получение значения
val, err := client.Get(ctx, "user:1").Result()
if err == redis.Nil {
    fmt.Println("Ключ не найден")
} else if err != nil {
    log.Fatal(err)
} else {
    fmt.Println("user:1", val)
}

Выбор правильной структуры данных в Redis — ключ к эффективному решению задачи.