Начало работы с 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']
...