Редис ЛСЕТ

Redis Lset



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

Списки Redis имеют индексацию на основе 0. Первый элемент обозначен как 0 й индекс; второй на 1 ул. индекс и так далее. Доступ к хвостовым элементам с помощью индексов возможен с отрицательными индексами, например, последний элемент имеет индекс -1, предпоследний элемент - -2 и т. д.









Элементы списка могут быть установлены по любому указанному индексу с помощью команды LSET, которая описана в следующем разделе.



Команда LSET

Команда LSET устанавливает элемент с заданным индексом списка Redis, хранящегося в указанном ключе. Он имеет следующий простой синтаксис:





Элемент индекса LSET list_key

list_key : ключ списка Redis.

индекс : индекс, в котором вам нужно установить элемент.



элемент : Строковый элемент, который будет установлен по указанному индексу.

Эта команда возвращает простую строку «ОК», если элемент был установлен правильно. Всякий раз, когда встречается индекс, выходящий за пределы допустимого диапазона, команда LSET возвращает ошибку.

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

Пример использования — обновление сообщений в социальных сетях

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

Давайте создадим список Redis для заданного идентификатора пользователя 100, который будет использоваться для хранения сообщений и сообщений о состоянии этого конкретного пользователя. Мы будем использовать команду LPUSH, чтобы разместить несколько фиктивных сообщений и сообщений о состоянии для пользователя с идентификатором 100.

LPUSH social-media:user:100 '2022-08-01:Хороший день для начала.'
LPUSH social-media:user:100 '2022-08-05:Начал новую работу в linuxhint'
Социальные сети LPUSH: пользователь: 100 '2022-08-06: Сегодня отличная вечеринка'
Социальные сети LPUSH: пользователь: 100 '2022-08-07: Плохой день!!!'

Выход

Предположим, что пользователь с идентификатором 100 обновит одну из своих старых записей. Предположим, третий пост, который он разместил, нуждается в некоторой корректировке. Команда LSET может легко добиться этого, как показано ниже.

Поскольку третий элемент находится по индексу 2 от Head. Мы будем обновлять его следующим образом:

LSET social-media:user:100 2 'Начал новую роль писателя в LinuxHint'

Выход

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

Мы можем сделать то же самое, указав индекс из хвоста следующим образом:

LSET social-media:user:100 -2 'Начал новую роль писателя в LinuxHint'

Как и ожидалось, третий элемент был установлен на новую строку «Задание запущено в LinuxHINT».

Если вы укажете индекс, выходящий за пределы допустимого диапазона, это вызовет ошибку, как показано ниже:

LSET social-media:user:100 6 'Работа начата в LinuxHINT'

Выход

Вывод

Команда LSET устанавливает элемент списка с указанным индексом в заданный элемент списка Redis, хранящийся в заданном ключе. Поскольку индексы списка Redis начинаются с 0, это первый элемент. Индекс 1 является вторым элементом списка и так далее. Как уже говорилось, индексы элементов, начинающихся с хвоста, могут быть указаны с использованием отрицательных чисел, таких как -1 — последний элемент, -2 — элемент перед последним и так далее. Всякий раз, когда передается несуществующий индекс, команда LSET возвращает ошибку. Кроме того, эта команда возвращает простой строковый вывод в случае успешного выполнения.