Этот проект был ответвлен от проекта Redis с открытым исходным кодом прямо перед переходом на доступные лицензии с новым исходным кодом.
Этот README — это просто документ для быстрого старта . Более подробную информацию можно найти на сайте valkey.io.
Valkey — это высокопроизводительный сервер структуры данных, который в основном обслуживает рабочие нагрузки «ключ-значение». Он поддерживает широкий спектр собственных структур и расширяемую систему плагинов для добавления новых структур данных и шаблонов доступа.
Makefile
Valkey можно скомпилировать и использовать в Linux, OSX, OpenBSD, NetBSD, FreeBSD. Мы поддерживаем архитектуры с прямым и прямым порядком байтов, а также 32-битные и 64-битные системы.
Он может компилироваться в системах, производных от Solaris (например, SmartOS), но мы стараемся поддерживать эту платформу, и Valkey не гарантирует, что она будет работать так же хорошо, как в Linux, OSX и *BSD.
Это так же просто, как:
% make
Для сборки с поддержкой TLS вам потребуются библиотеки разработки OpenSSL (например, libssl-dev в Debian/Ubuntu).
Чтобы реализовать поддержку TLS как встроенную в Valkey:
% make BUILD_TLS=yes
Чтобы собрать TLS как модуль Valkey:
% make BUILD_TLS=module
Обратите внимание, что режим Sentinel не поддерживает модуль TLS.
Для сборки с экспериментальной поддержкой RDMA вам потребуются библиотеки разработки RDMA (например, librdmacm-dev и libibverbs-dev в Debian/Ubuntu). На данный момент Valkey поддерживает только RDMA в режиме модуля подключения. Бегать:
% make BUILD_RDMA=module
Для сборки с поддержкой systemd вам потребуются библиотеки разработки systemd (например, libsystemd-dev в Debian/Ubuntu или systemd-devel в CentOS) и запустите:
% make USE_SYSTEMD=yes
Чтобы добавить суффикс к именам программ Valkey, используйте:
% make PROG_SUFFIX="-alt"
Вы можете собрать 32-битный двоичный файл Valkey, используя:
% make 32bit
После сборки Valkey рекомендуется протестировать его, используя:
% make test
Вышеупомянутое запускает основные интеграционные тесты. Дополнительные испытания запускаются с использованием:
% make test-unit # Unit tests
% make test-modules # Tests of the module API
% make test-sentinel # Valkey Sentinel integration tests
% make test-cluster # Valkey Cluster integration tests
Дополнительную информацию о запуске интеграционных тестов можно найти в файлеtests/README.md, а модульные тесты — в src/unit/README.md.
У Valkey есть некоторые зависимости, которые включены в каталог deps
. make
не перестраивает зависимости автоматически, даже если что-то в исходном коде зависимостей меняется.
Когда вы обновляете исходный код с помощью git pull
или когда код внутри дерева зависимостей изменяется каким-либо другим образом, обязательно используйте следующую команду, чтобы действительно все очистить и перестроить с нуля:
% make distclean
Это очистит: jemalloc, lua, Hiredis, Linenoise и другие зависимости.
Кроме того, если вы принудительно используете определенные параметры сборки, такие как 32-битная цель, отсутствие оптимизации компилятора C (для целей отладки) и другие подобные параметры времени сборки, эти параметры кэшируются на неопределенный срок, пока вы не выполните команду make distclean
.
Если после сборки Valkey с 32-битной целью вам необходимо пересобрать его с 64-битной целью или наоборот, вам необходимо выполнить команду make distclean
в корневом каталоге дистрибутива Valkey.
В случае ошибок сборки при попытке собрать 32-битный двоичный файл Valkey попробуйте выполнить следующие действия:
make 32bit
: make CFLAGS="-m32 -march=native" LDFLAGS="-m32"
Выбор распределителя памяти не по умолчанию при сборке Valkey выполняется путем установки переменной среды MALLOC
. Valkey по умолчанию компилируется и компонуется с libc malloc, за исключением jemalloc, который используется по умолчанию в системах Linux. Это значение по умолчанию было выбрано потому, что у jemalloc меньше проблем с фрагментацией, чем у libc malloc.
Чтобы принудительно скомпилировать libc malloc, используйте:
% make MALLOC=libc
Для компиляции jemalloc в системах Mac OS X используйте:
% make MALLOC=jemalloc
По умолчанию Valkey будет использовать функцию POSIX clock_gettime в качестве источника монотонных часов. В большинстве современных систем внутреннюю тактовую частоту процессора можно использовать для повышения производительности. Предостережения можно найти здесь: http://oliveryang.net/2015/09/pitfalls-of-TSC-usage/.
Для сборки с поддержкой внутренней тактовой частоты процессора используйте:
% make CFLAGS="-DUSE_PROCESSOR_CLOCK"
По умолчанию Valkey будет создавать удобный для пользователя цветной вывод. Если вы хотите увидеть более подробный вывод, используйте следующее:
% make V=1
Чтобы запустить Valkey с конфигурацией по умолчанию, просто введите:
% cd src
% ./valkey-server
Если вы хотите предоставить свой valkey.conf, вам необходимо запустить его, используя дополнительный параметр (путь к файлу конфигурации):
% cd src
% ./valkey-server /path/to/valkey.conf
Можно изменить конфигурацию Valkey, передав параметры непосредственно в качестве опций с помощью командной строки. Примеры:
% ./valkey-server --port 9999 --replicaof 127.0.0.1 6379
% ./valkey-server /etc/valkey/6379.conf --loglevel debug
Все параметры в valkey.conf также поддерживаются как параметры командной строки с точно таким же именем.
Чтобы вручную запустить сервер Valkey в режиме TLS (при условии, что был вызван ./gen-test-certs.sh
, чтобы доступны образцы сертификатов/ключей):
Встроенный режим TLS:
./src/valkey-server --tls-port 6379 --port 0
--tls-cert-file ./tests/tls/valkey.crt
--tls-key-file ./tests/tls/valkey.key
--tls-ca-cert-file ./tests/tls/ca.crt
Режим модуля TLS:
./src/valkey-server --tls-port 6379 --port 0
--tls-cert-file ./tests/tls/valkey.crt
--tls-key-file ./tests/tls/valkey.key
--tls-ca-cert-file ./tests/tls/ca.crt
--loadmodule src/valkey-tls.so
Обратите внимание, что вы можете отключить TCP, явно указав --port 0
. Также возможно одновременно использовать TCP и TLS, но вам придется назначить разные порты.
Используйте valkey-cli
для подключения к серверу Valkey:
./src/valkey-cli --tls
--cert ./tests/tls/valkey.crt
--key ./tests/tls/valkey.key
--cacert ./tests/tls/ca.crt
Если указать --tls-replication yes
реплика подключается к первичной.
Использование --tls-cluster yes
заставляет кластер Valkey использовать TLS между узлами.
Обратите внимание, что Valkey Over RDMA — экспериментальная функция. Он может быть изменен или удален в любой дополнительной или основной версии. В настоящее время он поддерживается только в Linux.
Чтобы вручную запустить сервер Valkey в режиме RDMA:
% ./src/valkey-server --protected-mode no
--loadmodule src/valkey-rdma.so bind=192.168.122.100 port=6379
Можно изменить адрес/порт привязки RDMA с помощью команды времени выполнения:
192.168.122.100:6379> CONFIG SET rdma.port 6380
Также возможно наличие одновременно RDMA и TCP, при этом не возникает конфликта TCP(6379) и RDMA(6379). Пример:
% ./src/valkey-server --protected-mode no
--loadmodule src/valkey-rdma.so bind=192.168.122.100 port=6379
--port 6379
Обратите внимание, что сетевая карта (192.168.122.100 в этом примере) должна поддерживать RDMA. Чтобы проверить, поддерживает ли сервер RDMA или нет:
% rdma res show (a new version iproute2 package)
Или:
% ibv_devices
Вы можете использовать valkey-cli для игры с Valkey. Запустите экземпляр valkey-server, затем в другом терминале попробуйте следующее:
% cd src
% ./valkey-cli
valkey> ping
PONG
valkey> set foo bar
OK
valkey> get foo
"bar"
valkey> incr mycounter
(integer) 1
valkey> incr mycounter
(integer) 2
valkey>
Чтобы установить двоичные файлы Valkey в /usr/local/bin, просто используйте:
% make install
Вы можете использовать make PREFIX=/some/other/directory install
если хотите использовать другой пункт назначения.
Примечание . Для совместимости с Redis мы создаем символические ссылки из имен Redis ( redis-server
, redis-cli
и т. д.) на двоичные файлы Valkey, установленные командой make install
. Символические ссылки создаются в том же каталоге, что и двоичные файлы Valkey. Символические ссылки удаляются при использовании make uninstall
. Создание символических ссылок можно пропустить, установив переменную makefile USE_REDIS_SYMLINKS=no
.
make install
просто установит двоичные файлы в вашу систему, но не будет настраивать сценарии инициализации и файлы конфигурации в соответствующем месте. В этом нет необходимости, если вы просто хотите немного поиграть с Valkey, но если вы устанавливаете его правильно для производственной системы, у нас есть сценарий, который делает это для систем Ubuntu и Debian:
% cd utils
% ./install_server.sh
Примечание . install_server.sh
не будет работать в Mac OSX; он создан только для Linux.
Скрипт задаст вам несколько вопросов и настроит все необходимое для правильного запуска Valkey в качестве фонового демона, который снова запустится при перезагрузке системы.
Вы сможете останавливать и запускать Valkey с помощью сценария с именем /etc/init.d/valkey_<portnumber>
, например /etc/init.d/valkey_6379
.
CMake
В дополнение к традиционной сборке Makefile
, Valkey поддерживает альтернативную, экспериментальную систему сборки с использованием CMake
.
Чтобы собрать и установить Valkey
, в режиме Release
(оптимизированная сборка) введите это в свой терминал:
mkdir build-release
cd $_
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/valkey
sudo make install
# Valkey is now installed under /opt/valkey
Другие параметры, поддерживаемые системой сборки Valkey CMake
:
-DBUILD_TLS=<on|off|module>
включить сборку TLS для Valkey-DBUILD_RDMA=<off|module>
включить сборку модуля RDMA (поддерживается только режим модуля)-DBUILD_MALLOC=<libc|jemalloc|tcmalloc|tcmalloc_minimal>
выберите используемый распределитель. По умолчанию в Linux: jemalloc
, для других ОС: libc
-DBUILD_SANITIZER=<address|thread|undefined>
сборка с включенным очистителем адресов-DBUILD_UNIT_TESTS=[1|0]
если установлено, сборка будет создавать исполняемые valkey-unit-tests
-DBUILD_TEST_MODULES=[1|0]
если установлено, сборка будет включать модули, расположенные в tests/modules
.-DBUILD_EXAMPLE_MODULES=[1|0]
если установлено, сборка будет включать примеры модулей, расположенные в папке src/modules
. -DCMAKE_BUILD_TYPE=<Debug|Release...>
определяет тип сборки, более подробную информацию см. в руководстве CMake.-DCMAKE_INSTALL_PREFIX=/installation/path
переопределяет это значение, чтобы определить префикс пользовательской установки. По умолчанию: /usr/local
-G<Generator Name>
создать файлы сборки для «Имени генератора». По умолчанию CMake создаст файлы Makefile
. CMake
по умолчанию генерирует удобный для пользователя цветной вывод. Если вы хотите увидеть более подробный вывод, используйте следующее:
make VERBOSE=1
На этапе CMake
CMake
кэширует переменные в локальном файле с именем CMakeCache.txt
. Все переменные, сгенерированные Valkey, удаляются из кеша после использования (это делается путем вызова unset(VAR-NAME CACHE)
). Однако некоторые переменные, например путь компилятора, сохраняются в кеше. Чтобы начать новую сборку, удалите файл кэша CMakeCache.txt
из папки сборки или полностью удалите папку сборки.
Важно перезапустить CMake
при добавлении новых исходных файлов.
На этапе сборки CMake
CMake
создает файл JSON с именем compile_commands.json
и помещает его в папку сборки. Этот файл используется многими IDE и текстовыми редакторами для завершения кода (через clangd
).
Небольшое предостережение: эти инструменты будут искать compile_commands.json
в верхней папке Valkey. Распространенным обходным решением является создание символической ссылки на него:
cd /path/to/valkey/
# We assume here that your build folder is `build-release`
ln -sf $( pwd ) /build-release/compile_commands.json $( pwd ) /compile_commands.json
Перезапустите вашу IDE и вуаля.
Пожалуйста, посетите CONTRIBUTING.md. Информацию об ошибках и уязвимостях безопасности можно найти на сайте SECURITY.md.
Valkey a Series of LF Projects, LLC 2810 N Church St, PMB 57274 Уилмингтон, Делавэр 19802-4447