Перейти к основному содержимому

Начало работы

Базовые функции

// Параметры подключения к серверу Redis
ПараметрыПодключения = Новый Структура("Адрес, Пароль",
"localhost:6379", "");

// Сохраняем значение в БД
Redis_ОсновныеФункции.УстановитьЗначение(ПараметрыПодключения,
"НаименованиеОрганизации:000000001", "ООО ""СтройОптТорг""");

// Получаем значение из БД
НаименованиеОрганизации = Redis_ОсновныеФункции.ПолучитьЗначение(ПараметрыПодключения,
"НаименованиеОрганизации:000000001");
Если НаименованиеОрганизации = Неопределено Тогда
// Получаем значение из БД 1С
...
КонецЕсли;

Работа с массивами (списками)

Сохранить и получить массив значений можно при помощи тех же функций которые описаны в разделе Базовые функции. Но в случае получения значения при помощи базовой функции происходит на одно обращение к серверу Redis больше. Этот лишний вызов расходуется на проверку типа значения. Для уменьшения количества обращений можно использовать специализированные функции для каждого из типов данных:

// Параметры подключения к серверу Redis
ПараметрыПодключения = Новый Структура("Адрес, Пароль",
"localhost:6379", "");

МассивЦветовНоменклатуры = Новый Массив;
МассивЦветовНоменклатуры.Добавть("Белый");
МассивЦветовНоменклатуры.Добавть("Черный");
МассивЦветовНоменклатуры.Добавть("Баклажан");

// Сохраняем значение в БД
Redis_ОсновныеФункции.ДобавитьЭлементыВМассив(ПараметрыПодключения,
"ДоступныеЦвета", МассивЦветовНоменклатуры);

// Получаем количество Элементов в списке Redis
КоличествоДоступныхЦветов = Redis_ОсновныеФункции.КоличествоСтрокМассива(ПараметрыПодключения,
"ДоступныеЦвета");
Сообщить(КоличествоДоступныхЦветов);

// Получаем значение из БД
// Происходит на один вызов сервера меньше чем при использовании функции ПолучитьЗначение
МассивЦветовНоменклатуры = Redis_ОсновныеФункции.ПолучитьМассив(ПараметрыПодключения,
"ДоступныеЦвета");

Несколько последовательных действий

Создание соединения через внешнюю компоненту достаточно затратное по времени действие. Так что если перед вами стоит задача выполнить несколько последовательных действий с сервером Redis, то рекмендую один раз создать соединение и в дальнейшем использовать его при вызове функций:

// Параметры подключения к серверу Redis
ПараметрыПодключения = Новый Структура("Адрес, Пароль",
"localhost:6379", "");

// Создаём соединение
Соединение = Redis_ОсновныеФункции.ПолучитьСоединение(ПараметрыПодключения);
Если Соединение = Неопределено Тогда
Возврат;
КонецЕсли;

// Сохраняем значения в цикле
Пока ВыборкаИзЗапроса.Следующий() Цикл
Redis_ОсновныеФункции.УстановитьЗначение(Соединение,
СтрШаблон("НаименованиеНоменклатуры:%1", ВыборкаИзЗапроса.Код),
ВыборкаИзЗапроса.НаименованиеНоменклатуры);
КонецЦикла;

// Закрываем соединение после выполнения всех действий
Redis_ОсновныеФункции.ЗакрытьСоединение(Соединение);

Работа с транзакцией

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

Важно понимать, что когда команда уже встала в очередь (то есть синтаксически верна), то, даже если она и вызовет ошибку при выполнении, остальные команды выполнятся всё равно. А вот если не встала (невалидна, вызвала ошибку при постановке в очередь), то Redis блок транзакции отклонит, даже не дождавшись завершения транзакции. И если вы попытаетесь после этого выполнить завершение транзакции, вам скажут, что транзакция была отклонена из-за предыдущих ошибок.

// Параметры подключения к серверу Redis
ПараметрыПодключения = Новый Структура("Адрес, Пароль",
"localhost:6379", "");

// Функция возвращает соединение с сервером которое следует использовать для дальнейшей
// постановки команд в очередь
Соединение = Redis_ОсновныеФункции.НачатьТранзакциюRedis();

// Сохраняем значения в цикле
Пока ВыборкаИзЗапроса.Следующий() Цикл
Redis_ОсновныеФункции.УстановитьЗначение(Соединение,
СтрШаблон("НаименованиеНоменклатуры:%1", ВыборкаИзЗапроса.Код),
ВыборкаИзЗапроса.НаименованиеНоменклатуры);
КонецЦикла;

// Выполняем все команды которые были добавлены в очередь
Redis_ОсновныеФункции.ЗафиксироватьТранзакциюRedis(Соединение);

Работа с временем жизни

Сервер Redis может самостоятельно удалять из своей базы записи с истекшим временем жизни. Значение срока через который запись будет автоматически удалена задаётся в секундах:

// Параметры подключения к серверу Redis
ПараметрыПодключения = Новый Структура("Адрес, Пароль",
"localhost:6379", "");

// Создаём соединение
Соединение = Redis_ОсновныеФункции.ПолучитьСоединение(ПараметрыПодключения);
Если Соединение = Неопределено Тогда
Возврат;
КонецЕсли;

// Сохраняем значение в БД
Redis_ОсновныеФункции.УстановитьЗначение(Соединение,
"НаименованиеОрганизации:000000001", "ООО ""СтройОптТорг""");

// Устанавливаем время жазни записи 1 час
Redis_ОсновныеФункции.УстановитьВремяЖизни(Соединение,
"НаименованиеОрганизации:000000001", 60 * 60);

// Получаем оставшееся время жазни для записи
ОставшеесяВремя = Redis_ОсновныеФункции.ПолучитьВремяЖизни(Соединение,
"НаименованиеОрганизации:000000001");
Сообщить(ОставшеесяВремя);

// Закрываем соединение после выполнения всех действий
Redis_ОсновныеФункции.ЗакрытьСоединение(Соединение);