이 프로젝트는 사용 가능한 새 소스 라이선스로 전환하기 직전에 오픈 소스 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)가 필요합니다.
Valkey 내장으로 TLS 지원을 구축하려면:
% make BUILD_TLS=yes
TLS를 Valkey 모듈로 빌드하려면:
% make BUILD_TLS=module
Sentinel 모드는 TLS 모듈을 지원하지 않습니다.
실험적인 RDMA 지원으로 빌드하려면 RDMA 개발 라이브러리(예: Debian/Ubuntu의 librdmacm-dev 및 libibverbs-dev)가 필요합니다. 현재 Valkey는 연결 모듈 모드로 RDMA만 지원합니다. 달리다:
% make BUILD_RDMA=module
시스템 지원으로 빌드하려면 시스템 개발 라이브러리(예: 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
통합 테스트 실행에 대한 자세한 내용은 테스트/README.md에서 찾을 수 있으며 단위 테스트에 대해서는 src/unit/README.md를 참조하세요.
Valkey에는 deps
디렉토리에 포함된 몇 가지 종속성이 있습니다. make
종속성 소스 코드의 내용이 변경되더라도 종속성을 자동으로 다시 빌드하지 않습니다.
git pull
사용하여 소스 코드를 업데이트하거나 종속성 트리 내부의 코드가 다른 방식으로 수정되는 경우 모든 것을 실제로 정리하고 처음부터 다시 빌드하려면 다음 명령을 사용해야 합니다.
% make distclean
이렇게 하면 jemalloc, lua, receivedis, linenoise 및 기타 종속 항목이 정리됩니다.
또한 32비트 대상, C 컴파일러 최적화 없음(디버깅 목적) 및 기타 유사한 빌드 시간 옵션과 같은 특정 빌드 옵션을 강제로 적용하는 경우 해당 옵션은 make distclean
명령을 실행할 때까지 무기한 캐시됩니다.
32비트 대상으로 Valkey를 빌드한 후 64비트 대상으로 다시 빌드해야 하거나 그 반대로 Valkey 배포판의 루트 디렉터리에서 make distclean
수행해야 합니다.
Valkey의 32비트 바이너리를 빌드하려고 할 때 빌드 오류가 발생하는 경우 다음 단계를 수행하십시오.
make 32bit
대신 다음 명령줄을 사용해 보십시오: make CFLAGS="-m32 -march=native" LDFLAGS="-m32"
Valkey를 빌드할 때 기본이 아닌 메모리 할당자를 선택하는 것은 MALLOC
환경 변수를 설정하여 수행됩니다. Valkey는 기본적으로 libc malloc에 대해 컴파일되고 링크됩니다. 단, Linux 시스템에서는 jemalloc이 기본값입니다. 이 기본값은 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에서만 지원됩니다.
RDMA 모드로 Valkey 서버를 수동으로 실행하려면 다음을 수행하십시오.
% ./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
사용하면 심볼릭 링크가 제거됩니다. makefile 변수 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>
은 "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를 다시 시작하세요. 짜잔
CONTRIBUTING.md를 참조하세요. 보안 버그 및 취약점에 대해서는 SECURITY.md를 참조하세요.
Valkey a Series of LF Projects, LLC 2810 N Church St, PMB 57274 Wilmington, Delaware 19802-4447