このプロジェクトは、新しいソースの利用可能なライセンスに移行する直前に、オープン ソースの Redis プロジェクトから分岐されました。
この README は単なるクイックスタートドキュメントです。詳細については、valkey.io を参照してください。
Valkey は、主にキー/値ワークロードを処理する高性能データ構造サーバーです。幅広いネイティブ構造と、新しいデータ構造とアクセス パターンを追加するための拡張可能なプラグイン システムをサポートします。
Makefile
使用して Valkey をビルドするValkey は、Linux、OSX、OpenBSD、NetBSD、FreeBSD 上でコンパイルして使用できます。ビッグ エンディアンとリトル エンディアンのアーキテクチャ、および 32 ビットと 64 ビットの両方のシステムをサポートしています。
Solaris 派生システム (SmartOS など) でコンパイルできますが、このプラットフォームのサポートはベストエフォートであり、Valkey が Linux、OSX、および *BSD と同様に動作することは保証されていません。
それは次のように簡単です。
% make
TLS サポートを使用してビルドするには、OpenSSL 開発ライブラリ (例: Debian/Ubuntu の libssl-dev) が必要です。
TLS サポートを Valkey 組み込みとして構築するには:
% make BUILD_TLS=yes
TLS を Valkey モジュールとして構築するには:
% make BUILD_TLS=module
センチネル モードは TLS モジュールをサポートしていないことに注意してください。
実験的な RDMA サポートを使用してビルドするには、RDMA 開発ライブラリ (例: Debian/Ubuntu の librdmacm-dev および libibverbs-dev) が必要です。現時点では、Valkey は接続モジュール モードとして RDMA のみをサポートしています。走る:
% make BUILD_RDMA=module
systemd サポートを使用してビルドするには、systemd 開発ライブラリ (Debian/Ubuntu の libsystemd-dev や CentOS の systemd-devel など) が必要で、以下を実行します。
% 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
コマンドを発行するまで無期限にキャッシュされます。
32 ビット ターゲットで Valkey をビルドした後、64 ビット ターゲットで再ビルドする必要がある場合、またはその逆の場合は、Valkey ディストリビューションのルート ディレクトリでmake distclean
実行する必要があります。
Valkey の 32 ビット バイナリをビルドしようとしたときにビルド エラーが発生した場合は、次の手順を試してください。
make 32bit
の代わりに次のコマンド ラインを使用してみてください: make CFLAGS="-m32 -march=native" LDFLAGS="-m32"
Valkey のビルド時にデフォルト以外のメモリ アロケータを選択するには、 MALLOC
環境変数を設定します。 Linux システムのデフォルトである jemalloc を除き、Valkey はデフォルトで libc malloc に対してコンパイルおよびリンクされます。このデフォルトが選択されたのは、jemalloc の方が libc malloc よりも断片化の問題が少ないことが証明されているためです。
libc malloc に対して強制的にコンパイルするには、次を使用します。
% make MALLOC=libc
Mac OS X システムで jemalloc に対してコンパイルするには、次を使用します。
% 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 内のすべてのオプションは、まったく同じ名前でコマンド ラインを使用するオプションとしてもサポートされています。
TLS モードで Valkey サーバーを手動で実行するには ( ./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
--port 0
明示的に指定すると、TCP を無効にできることに注意してください。 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 Cluster がノード間で 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
など) からmake install
によってインストールされた Valkey バイナリへのシンボリックリンクを作成します。シンボリックリンクは、Valkey バイナリと同じディレクトリに作成されます。シンボリックリンクは、 make uninstall
使用すると削除されます。シンボリックリンクの作成は、メイクファイル変数USE_REDIS_SYMLINKS=no
を設定することでスキップできます。
make install
システムにバイナリをインストールするだけで、適切な場所に init スクリプトや設定ファイルを設定しません。 Valkey を少し試してみたいだけの場合はこれは必要ありませんが、運用システムに適切な方法でインストールする場合は、Ubuntu および Debian システム用にこれを行うスクリプトがあります。
% cd utils
% ./install_server.sh
注: install_server.sh
Mac OSX では動作しません。 Linux 専用に構築されています。
スクリプトはいくつかの質問をし、システムの再起動時に再び起動するバックグラウンド デーモンとして Valkey を適切に実行するために必要なものをすべてセットアップします。
/etc/init.d/valkey_<portnumber>
という名前のスクリプト ( /etc/init.d/valkey_6379
など) を使用して、Valkey を停止および起動できます。
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>
Valkey の TLS ビルドを有効にする-DBUILD_RDMA=<off|module>
RDMA モジュールのビルドを有効にします (モジュール モードのみサポート)-DBUILD_MALLOC=<libc|jemalloc|tcmalloc|tcmalloc_minimal>
使用するアロケーターを選択します。 Linux のデフォルト: jemalloc
、他の OS のデフォルト: 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
compile_commands.json
という名前の JSON ファイルを生成し、それをビルド フォルダーの下に配置します。このファイルは、( clangd
経由で) コード補完を提供するために多くの IDE およびテキスト エディターで使用されます。
小さな注意点は、これらのツールは Valkey の最上位フォルダーの下にあるcompile_commands.json
を検索することです。一般的な回避策は、そのへのシンボリック リンクを作成することです。
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 を再起動すれば出来上がりです
COTRIBUTING.md を参照してください。セキュリティのバグと脆弱性については、SECURITY.md を参照してください。
Valkey a Series of LF Projects, LLC 2810 N Church St, PMB 57274 Wilmington, Delaware 19802-4447