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