Начало работы с net.box | Tarantool
Документация на русском языке
поддерживается сообществом
Примеры и руководства Начало работы с net.box

Начало работы с net.box

Ниже приводится пример использования большинства методов net.box.

Подробную информацию о модуле net.box вы найдете в соответствующем разделе справочника по модулям.

Данный пример сработает на конфигурации из песочницы, предполагается, что:

  • экземпляр Tarantool запущен на localhost 127.0.0.1:3301;
  • создан спейс под названием tester с первичным числовым ключом;
  • спейс содержит кортеж, в котором есть ключ со значением = 800;
  • у текущего пользователя есть права на чтение, запись и выполнение.

Используйте команды ниже для быстрой настройки песочницы:

box.cfg{listen = 3301}
s = box.schema.space.create('tester')
s:create_index('primary', {type = 'hash', parts = {1, 'unsigned'}})
t = s:insert({800, 'TEST'})
box.schema.user.grant('guest', 'read,write,execute', 'universe')

Чтобы начать работу, запустите модуль net.box, используя команду require('net.box'):

tarantool> net_box = require('net.box')

Далее необходимо создать новое подключение. В net.box для локального Tarantool-сервера есть заданный объект self всегда установленного подключения. Таким образом, команду conn = net_box.connect('localhost:3301') можно заменить на вызов объекта conn = net_box.self.

tarantool> conn = net_box.self

Запустите команду ping():

tarantool> conn:ping()
---
- true
...

Сделайте выборку всех кортежей в спейсе tester, у которых значение ключа равно 800:

tarantool> conn.space.tester:select{800}
---
- - [800, 'TEST']
...

Вставьте два кортежа в спейс:

tarantool> conn.space.tester:insert({700, 'TEST700'})
---
- [700, 'TEST700']
...
tarantool> conn.space.tester:insert({600, 'TEST600'})
---
- [600, 'TEST600']
...

После вставки в спейсе появился один кортеж со значением ключа 600. Для выбора этого кортежа вы можете использовать метод get(). В отличие от команды select(), метод get() возвращает только один кортеж, удовлетворяющий заданным условиям.

tarantool> conn.space.tester:get({600})
---
- [600, 'TEST600']
...

Чтобы обновить существующий кортеж, вы можете использовать как метод update(), так и метод upsert(). Функция update() может использоваться для присваивания, арифметических операций (если поле числовое), вырезания и вставки фрагментов поля, а также для удаления или вставки поля.

В этом руководстве команда update() используется для обновления кортежа, определенного значением ключа 800. Операция присваивает новое значение второму полю в кортеже:

tarantool> conn.space.tester:update(800, {{'=', 2, 'TEST800'}})
---
- [800, 'TEST800']
...

Для функции upsert, если уже существует кортеж, который совпадает с ключевыми полями tuple, запрос приведет к тому же результату, что и метод update(). Если подходящего кортежа нет, запрос приведет к тому же результату, что и метод insert().

tarantool> conn.space.tester:upsert({500, 'TEST500'}, {{'=', 2, 'TEST'}})

Чтобы удалить кортеж, в котором значение ключа равно 600, запустите метод delete():

tarantool> conn.space.tester:delete{600}
---
- [600, 'TEST600']
...

Затем замените существующий кортеж на новый:

tarantool> conn.space.tester:replace{500, 'New data', 'Extra data'}
---
- [500, 'New data', 'Extra data']
...

Наконец, сделайте выборку по всем кортежам из спейса:

tarantool> conn.space.tester:select{}
---
- - [800, 'TEST800']
  - [500, 'New data', 'Extra data']
  - [700, 'TEST700']
...

Закройте соединение явным образом, когда оно больше не используется:

tarantool> conn:close()
---
...
Нашли ответ на свой вопрос?
Обратная связь