Какие типы ключей есть в Redis?
Redis поддерживает несколько типов ключей, которые позволяют хранить различные виды данных и обеспечивают гибкость в работе с хранилищем. Вот основные типы ключей в Redis:
1. Строки (Strings)
- Описание: Самый простой и основной тип данных в Redis. Значением может быть строка или бинарные данные, такие как изображение или сериализованный объект.
- Пример использования: Сохранение строковых значений, чисел, JSON и других форматов данных.
- Команды:
SET
,GET
,INCR
,DECR
,APPEND
.
1 2 3 |
SET key "Hello, Redis!" GET key |
2. Списки (Lists)
- Описание: Последовательность строк, упорядоченных по добавлению. Это двусвязный список, который позволяет добавлять элементы в начало или конец списка.
- Пример использования: Очереди сообщений, список задач.
- Команды:
LPUSH
,RPUSH
,LPOP
,RPOP
,LRANGE
.
1234LPUSH mylist "first element"RPUSH mylist "last element"LRANGE mylist 0 -1 # Получить все элементы списка
3. Множества (Sets)
- Описание: Неупорядоченная коллекция уникальных строк. Не допускаются дубликаты.
- Пример использования: Хранение уникальных элементов, таких как наборы пользователей или тегов.
- Команды:
SADD
,SREM
,SMEMBERS
,SISMEMBER
.
1234SADD myset "element1"SADD myset "element2"SMEMBERS myset # Получить все элементы множества
4. Отсортированные множества (Sorted Sets, ZSets)
- Описание: Похожи на обычные множества, но каждому элементу присваивается числовой рейтинг (score), который используется для сортировки элементов.
- Пример использования: Хранение рейтингов пользователей, лидеров по баллам.
- Команды:
ZADD
,ZREM
,ZRANGE
,ZREVRANGE
.
1234ZADD leaderboard 100 "user1"ZADD leaderboard 150 "user2"ZRANGE leaderboard 0 -1 WITHSCORES # Получить элементы с их баллами
5. Хеши (Hashes)
- Описание: Структуры данных, которые позволяют хранить наборы полей и значений. Это аналог JSON или объекта с полями.
- Пример использования: Хранение объектов с множеством атрибутов, таких как профиль пользователя.
- Команды:
HSET
,HGET
,HGETALL
,HMSET
.
1234HSET user:1000 name "John"HSET user:1000 age 30HGETALL user:1000 # Получить все поля и значения
6. Битмапы (Bitmaps)
- Описание: Специальные операции на строках, позволяющие работать с ними как с битовыми массивами.
- Пример использования: Хранение последовательности флагов, статистика по посещаемости.
- Команды:
SETBIT
,GETBIT
,BITCOUNT
.
123SETBIT mybitmap 5 1 # Установить бит в 1 на позиции 5GETBIT mybitmap 5 # Получить значение бита на позиции 5
7. Битовые поля (Bitfields)
- Описание: Расширение для работы с битами в строках, позволяющее оперировать целыми числами, которые хранятся в виде битовых полей.
- Пример использования: Экономичное хранение целых чисел и выполнение операций с ними.
- Команды:
BITFIELD
.
12BITFIELD mykey INCRBY i5 100 1
8. Геопространственные индексы (Geospatial Indexes)
- Описание: Хранение и выполнение операций с географическими координатами (широта, долгота).
- Пример использования: Сохранение местоположений, поиск ближайших объектов.
- Команды:
GEOADD
,GEORADIUS
,GEODIST
.
123GEOADD locations 13.361389 38.115556 "Palermo"GEORADIUS locations 15 37 200 km
9. Стримы (Streams)
- Описание: Логически упорядоченные структуры данных, которые позволяют сохранять записи в виде журнала (log), похожи на журналы событий.
- Пример использования: Обработка потоков событий, сообщений или логов.
- Команды:
XADD
,XRANGE
,XREAD
.
123XADD mystream * name "Alice" age 30XRANGE mystream - +
10. Гиперлоглоги (HyperLogLogs)
- Описание: Структура данных для приблизительного учёта уникальных элементов в большом наборе данных с очень малым использованием памяти.
- Пример использования: Подсчёт уникальных посещений сайта или уникальных элементов в потоке данных.
- Команды:
PFADD
,PFCOUNT
.
123PFADD mylog "element1" "element2"PFCOUNT mylog
11. Блоки с задержкой (Pub/Sub)
- Описание: Механизм для обмена сообщениями между процессами через шаблон «издатель-подписчик». Хотя это не тип данных, а скорее функционал Redis.
- Пример использования: Обмен сообщениями между сервисами в реальном времени.
- Команды:
PUBLISH
,SUBSCRIBE
.
123PUBLISH mychannel "Hello, World!"SUBSCRIBE mychannel
Заключение
Redis предлагает широкий спектр типов данных, что делает его крайне универсальным инструментом для решения разных задач — от простого кеширования строк до сложных систем обмена сообщениями или геопространственных операций. Выбор типа данных зависит от конкретной задачи и требований к производительности и функциональности.
Recommended Posts
Шаблон jinja2 для конфига redis sentinel
18.02.2024
Шаблон jinja2 для конфига Redis
17.02.2024