Update README.md
This commit is contained in:
parent
30d66ffe93
commit
ab1e29e108
89
README.md
89
README.md
@ -1,4 +1,4 @@
|
||||
## Краткая документация проекта Futriix
|
||||
## Краткая документация Futriix-JSON
|
||||
|
||||
<!-- TABLE OF CONTENTS -->
|
||||
<br>
|
||||
@ -8,13 +8,11 @@
|
||||
<li>
|
||||
<a href="#о-проекте">О проекте</a>
|
||||
</li>
|
||||
<li><a href="#building">Building</a></li>
|
||||
<li><a href="#компиляция">Компиляция</a></li>
|
||||
<li><a href="#использование">Использование</a></li>
|
||||
<li><a href="#кластер">Кластер</a></li>
|
||||
<li><a href="#дорожная-карта">Дорожная карта</a></li>
|
||||
<li><a href="#вклад">Вклад</a></li>
|
||||
<li><a href="#лицензия">Лицензия</a></li>
|
||||
<li><a href="#ограничения">Ограничения</a></li>
|
||||
<li><a href="#поддерживаемые команды">Поддерживаемые Команды</a></li>
|
||||
<li><a href="#формат клиента">Формат Клиента</a></li>
|
||||
<li><a href="#контакты">Контакты</a></li>
|
||||
</ol>
|
||||
</details>
|
||||
@ -24,35 +22,32 @@
|
||||
|
||||
# Futriix JSON
|
||||
|
||||
Futriix-json is a C++ Futriix-Module that provides native JSON (JavaScript Object Notation) support for Futriix. The implementation complies with RFC7159 and ECMA-404 JSON data interchange standards. Users can natively store, query, and modify JSON data structures using the JSONPath query language. The query expressions support advanced capabilities including wildcard selections, filter expressions, array slices, union operations, and recursive searches.
|
||||
Futriix-json is a C++ Futriix-Модуль,который обеспечивает встроенную поддержку JSON (JavaScript Object Notation) для Futriix. Реализация соответствует стандартам обмена данными RFC7159 и ECMA-404 JSON. Пользователи могут хранить, запрашивать и изменять структуры данных JSON с помощью языка запросов JSONPath. Выражения запроса поддерживают расширенные возможности, включая выбор с подстановочными знаками, выражения фильтров, срезы массива, операции объединения и рекурсивный поиск. Futriix-json использует [RapidJSON](https://rapidjson.org/), высокопроизводительный JSON-парсер и генератор для C++, выбранный за его компактность и исключительную производительность и эффективность памяти. Будучи библиотекой только для заголовков без внешних зависимостей, RapidJSON обеспечивает надежную поддержку Unicode, сохраняя при этом компактный профиль памяти всего 16 байт на значение JSON на большинстве 32/64-разрядных машин.
|
||||
|
||||
Futriix-json leverages [RapidJSON](https://rapidjson.org/), a high-performance JSON parser and generator for C++, chosen for its small footprint and exceptional performance and memory efficiency. As a header-only library with no external dependencies, RapidJSON provides robust Unicode support while maintaining a compact memory profile of just 16 bytes per JSON value on most 32/64-bit machines.
|
||||
## Компиляция
|
||||
|
||||
## Building
|
||||
|
||||
#### To build the module and run tests
|
||||
#### Компиляция модуля и запуск тестов
|
||||
```text
|
||||
# Build futriix-server (unstable) and run integration tests
|
||||
# Компилирет futriix-server (нестабильную-ветку) и запускает интеграционные тесты
|
||||
./build.sh
|
||||
```
|
||||
|
||||
The default futriix version is "unstable". To override it, do:
|
||||
По умолчанию версия futriix является "нестабильной". Для того чтобы изменить ветку выполните команду:
|
||||
```text
|
||||
# Build futriix-server (8.0) and run integration tests
|
||||
# Компилирет futriix-server () и запускает интеграционные тесты
|
||||
SERVER_VERSION=8.0 ./build.sh
|
||||
```
|
||||
|
||||
Custom compiler flags can be passed to the build script via environment variable CFLAGS. For example:
|
||||
Пользовательские флаги компилятора могут быть переданы в скрипт сборки через переменную окружения CFLAGS. Например:
|
||||
```text
|
||||
CFLAGS="-O0 -Wno-unused-function" ./build.sh
|
||||
```
|
||||
#### To build the module with ASAN and run tests
|
||||
#### Сборка модуля с помощью ASAN и запуск тестов
|
||||
```text
|
||||
export ASAN_BUILD=true
|
||||
./build.sh
|
||||
```
|
||||
|
||||
#### To build just the module
|
||||
#### Чтобы собрать только модуль
|
||||
```text
|
||||
mkdir build
|
||||
cd build
|
||||
@ -60,7 +55,7 @@ cmake ..
|
||||
make
|
||||
```
|
||||
|
||||
The default valkey version is "unstable". To override it, do:
|
||||
Версия futriix по умолчанию — «нестабильная». Чтобы переопределить его, выполните следующие действия:
|
||||
```text
|
||||
mkdir build
|
||||
cd build
|
||||
@ -68,7 +63,7 @@ cmake .. -DVALKEY_VERSION=8.0
|
||||
make
|
||||
```
|
||||
|
||||
Custom compiler flags can be passed to cmake via variable CFLAGS. For example:
|
||||
Пользовательские флаги компилятора могут быть переданы в cmake через переменную CFLAGS. Например:
|
||||
```text
|
||||
mkdir build
|
||||
cd build
|
||||
@ -76,18 +71,18 @@ cmake .. -DCFLAGS="-O0 -Wno-unused-function"
|
||||
make
|
||||
```
|
||||
|
||||
#### To run all unit tests:
|
||||
#### Запуск всех Юнит-тестов:
|
||||
```text
|
||||
cd build
|
||||
make -j unit
|
||||
```
|
||||
|
||||
#### To run all integration tests:
|
||||
#### Запуск всех интеграционных тестов:
|
||||
```text
|
||||
make -j test
|
||||
```
|
||||
|
||||
#### To run one integration test:
|
||||
#### Запуск одного интеграционного теста:
|
||||
```text
|
||||
TEST_PATTERN=<test-function-or-file> make -j test
|
||||
```
|
||||
@ -97,32 +92,33 @@ TEST_PATTERN=test_sanity make -j test
|
||||
TEST_PATTERN=test_rdb.py make -j test
|
||||
```
|
||||
|
||||
## Load the Module
|
||||
To test the module with a Valkey, you can load the module using any of the following ways:
|
||||
## Загрузка модуля
|
||||
Чтобы протестировать модуль с помощью Futriix, вы можете загрузить модуль любым из следующих способов:
|
||||
|
||||
#### Using valkey.conf:
|
||||
#### С ипользованием файла конфигурации futriix.conf:
|
||||
```
|
||||
1. Add the following to valkey.conf:
|
||||
1. Добавьте следующее строки в файл конфигураии futriix.conf:
|
||||
loadmodule /path/to/libjson.so
|
||||
2. Start valkey-server:
|
||||
valkey-server /path/to/valkey.conf
|
||||
2. Запускаем futriix-сервер:
|
||||
futriix-server /path/to/futriix.conf
|
||||
```
|
||||
|
||||
#### Starting valkey with --loadmodule option:
|
||||
#### Запуск Futriix с помощью опции --loadmodule option:
|
||||
```text
|
||||
valkey-server --loadmodule /path/to/libjson.so
|
||||
futriix-server --loadmodule /path/to/libjson.so
|
||||
```
|
||||
|
||||
#### Using Valkey command MODULE LOAD:
|
||||
#### Использование команды Futriix MODULE LOAD:
|
||||
```
|
||||
1. Connect to a running Valkey instance using valkey-cli
|
||||
2. Execute Valkey command:
|
||||
MODULE LOAD /path/to/libjson.so
|
||||
```
|
||||
|
||||
## Usage Example
|
||||
## Использование
|
||||
|
||||
Первая команда JSON, которую следует попробовать, — это JSON. SET, который задает ключ Redis со значением JSON. JSON. SET принимает все типы значений JSON. В этом примере создается строка JSON:
|
||||
|
||||
The first JSON command to try is JSON.SET, which sets a Redis key with a JSON value. JSON.SET accepts all JSON value types. This example creates a JSON string:
|
||||
|
||||
```
|
||||
> JSON.SET bike $ '"Hyperion"'
|
||||
@ -133,9 +129,7 @@ OK
|
||||
1) "string"
|
||||
```
|
||||
|
||||
Note how the commands include the dollar sign character $. This is the path to the value in the JSON document (in this case it just means the root).
|
||||
|
||||
Here are a few more string operations. JSON.STRLEN tells you the length of the string, and you can append another string to it with JSON.STRAPPEND.
|
||||
Обратите внимание, что команды включают символ доллара $. Это путь к значению в документе JSON (в данном случае это просто корень). Вот еще несколько строковых операций. JSON. STRLEN сообщает вам длину строки, и вы можете добавить к ней еще одну строку с помощью JSON. STRAPPEND.
|
||||
|
||||
```
|
||||
> JSON.STRLEN bike $
|
||||
@ -146,7 +140,7 @@ Here are a few more string operations. JSON.STRLEN tells you the length of the s
|
||||
"[\"Hyperion (Enduro bikes)\"]"
|
||||
```
|
||||
|
||||
Numbers can be incremented and multiplied:
|
||||
Числа можно увеличивать и умножать:
|
||||
|
||||
```
|
||||
> JSON.SET crashes $ 0
|
||||
@ -161,10 +155,7 @@ OK
|
||||
"[42]"
|
||||
```
|
||||
|
||||
Here's a more interesting example that includes JSON arrays and objects:
|
||||
|
||||
|
||||
|
||||
Вот более интересный пример, который включает массивы и объекты JSON:
|
||||
|
||||
```
|
||||
> JSON.SET newbike $ '["Deimos", {"crashes": 0}, null]'
|
||||
@ -179,9 +170,9 @@ OK
|
||||
"[[\"Deimos\",{\"crashes\":0}]]"
|
||||
```
|
||||
|
||||
The JSON.DEL command deletes any JSON value you specify with the path parameter.
|
||||
Команда JSON.DEL удаляет любое значение JSON которое вы указываете с помощью параметра path.
|
||||
|
||||
You can manipulate arrays with a dedicated subset of JSON commands:
|
||||
Вы можете манипулировать массивами с помощью выделенного подмножества команд JSON:
|
||||
|
||||
```
|
||||
> JSON.SET riders $ []
|
||||
@ -205,7 +196,7 @@ OK
|
||||
|
||||
```
|
||||
|
||||
JSON objects also have their own commands:
|
||||
JSON объекты также имеют свои собственные команды:
|
||||
|
||||
```
|
||||
> JSON.SET bike:1 $ '{"model": "Deimos", "brand": "Ergonom", "price": 4972}'
|
||||
@ -220,10 +211,10 @@ OK
|
||||
|
||||
```
|
||||
|
||||
## Format Cli Output
|
||||
## Формат клиента
|
||||
|
||||
```
|
||||
$ valkey-cli --raw
|
||||
$ futriix-cli --raw
|
||||
> JSON.GET obj INDENT "\t" NEWLINE "\n" SPACE " " $
|
||||
[
|
||||
{
|
||||
@ -234,12 +225,12 @@ $ valkey-cli --raw
|
||||
]
|
||||
```
|
||||
|
||||
## Limitations
|
||||
## Ограничения
|
||||
|
||||
A JSON value passed to a command can have a depth of up to 128. If you pass to a command a JSON value that contains an object or an array with a nesting level of more than 128, the command returns an error.
|
||||
|
||||
|
||||
## Supported Module Commands
|
||||
## Поддерживаемые команды
|
||||
```text
|
||||
JSON.ARRAPPEND
|
||||
JSON.ARRINDEX
|
||||
|
Loading…
x
Reference in New Issue
Block a user