Proyek ini merupakan cabang dari proyek sumber terbuka Redis tepat sebelum transisi ke lisensi sumber baru yang tersedia.
README ini hanyalah dokumen mulai cepat. Detail lebih lanjut dapat ditemukan di valkey.io
Valkey adalah server struktur data berkinerja tinggi yang terutama melayani beban kerja kunci/nilai. Ini mendukung berbagai struktur asli dan sistem plugin yang dapat diperluas untuk menambahkan struktur data dan pola akses baru.
Makefile
Valkey dapat dikompilasi dan digunakan di Linux, OSX, OpenBSD, NetBSD, FreeBSD. Kami mendukung arsitektur big endian dan little endian, serta sistem 32 bit dan 64 bit.
Ini dapat dikompilasi pada sistem turunan Solaris (misalnya SmartOS) tetapi dukungan kami untuk platform ini adalah upaya terbaik dan Valkey tidak dijamin berfungsi sebaik di Linux, OSX, dan *BSD.
Ini sesederhana:
% make
Untuk membangun dengan dukungan TLS, Anda memerlukan perpustakaan pengembangan OpenSSL (misalnya libssl-dev di Debian/Ubuntu).
Untuk membangun dukungan TLS sebagai bawaan Valkey:
% make BUILD_TLS=yes
Untuk membangun TLS sebagai modul Valkey:
% make BUILD_TLS=module
Perhatikan bahwa mode sentinel tidak mendukung modul TLS.
Untuk membangun dengan dukungan RDMA eksperimental, Anda memerlukan perpustakaan pengembangan RDMA (misalnya librdmacm-dev dan libibverbs-dev di Debian/Ubuntu). Untuk saat ini, Valkey hanya mendukung RDMA sebagai mode modul koneksi. Berlari:
% make BUILD_RDMA=module
Untuk membangun dengan dukungan systemd, Anda memerlukan perpustakaan pengembangan systemd (seperti libsystemd-dev di Debian/Ubuntu atau systemd-devel di CentOS) dan jalankan:
% make USE_SYSTEMD=yes
Untuk menambahkan akhiran ke nama program Valkey, gunakan:
% make PROG_SUFFIX="-alt"
Anda dapat membuat biner Valkey 32 bit menggunakan:
% make 32bit
Setelah membuat Valkey, ada baiknya untuk mengujinya menggunakan:
% make test
Di atas menjalankan tes integrasi utama. Tes tambahan dimulai menggunakan:
% 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
Lebih lanjut tentang menjalankan tes integrasi dapat ditemukan di tes/README.md dan untuk tes unit, lihat src/unit/README.md.
Valkey memiliki beberapa dependensi yang termasuk dalam direktori deps
. make
tidak secara otomatis membangun kembali dependensi meskipun ada sesuatu dalam kode sumber dependensi yang berubah.
Saat Anda memperbarui kode sumber dengan git pull
atau ketika kode di dalam pohon dependensi diubah dengan cara lain, pastikan untuk menggunakan perintah berikut untuk benar-benar membersihkan semuanya dan membangun kembali dari awal:
% make distclean
Ini akan membersihkan: jemalloc, lua, sewa, linenoise dan dependensi lainnya.
Juga jika Anda memaksakan opsi build tertentu seperti target 32bit, tidak ada optimasi kompiler C (untuk tujuan debugging), dan opsi waktu build serupa lainnya, opsi tersebut akan di-cache tanpa batas waktu hingga Anda mengeluarkan perintah make distclean
.
Jika setelah membangun Valkey dengan target 32 bit Anda perlu membangunnya kembali dengan target 64 bit, atau sebaliknya, Anda perlu melakukan make distclean
di direktori root distribusi Valkey.
Jika terjadi kesalahan build saat mencoba membuat biner Valkey 32 bit, coba langkah berikut:
make 32bit
: make CFLAGS="-m32 -march=native" LDFLAGS="-m32"
Memilih pengalokasi memori non-default saat membangun Valkey dilakukan dengan mengatur variabel lingkungan MALLOC
. Valkey dikompilasi dan dihubungkan dengan libc malloc secara default, kecuali jemalloc yang menjadi default pada sistem Linux. Default ini dipilih karena jemalloc telah terbukti memiliki lebih sedikit masalah fragmentasi dibandingkan libc malloc.
Untuk memaksa kompilasi terhadap libc malloc, gunakan:
% make MALLOC=libc
Untuk mengkompilasi terhadap jemalloc pada sistem Mac OS X, gunakan:
% make MALLOC=jemalloc
Secara default, Valkey akan dibuat menggunakan fungsi POSIX clock_gettime sebagai sumber jam monoton. Pada sebagian besar sistem modern, jam prosesor internal dapat digunakan untuk meningkatkan kinerja. Perhatian dapat ditemukan di sini: http://oliveryang.net/2015/09/pitfalls-of-TSC-usage/
Untuk membangun dengan dukungan jam instruksi internal prosesor, gunakan:
% make CFLAGS="-DUSE_PROCESSOR_CLOCK"
Valkey akan dibuat dengan keluaran berwarna yang mudah digunakan secara default. Jika Anda ingin melihat keluaran yang lebih bertele-tele, gunakan yang berikut ini:
% make V=1
Untuk menjalankan Valkey dengan konfigurasi default, cukup ketik:
% cd src
% ./valkey-server
Jika Anda ingin memberikan valkey.conf Anda, Anda harus menjalankannya menggunakan parameter tambahan (jalur file konfigurasi):
% cd src
% ./valkey-server /path/to/valkey.conf
Konfigurasi Valkey dapat diubah dengan meneruskan parameter secara langsung sebagai opsi menggunakan baris perintah. Contoh:
% ./valkey-server --port 9999 --replicaof 127.0.0.1 6379
% ./valkey-server /etc/valkey/6379.conf --loglevel debug
Semua opsi di valkey.conf juga didukung sebagai opsi menggunakan baris perintah, dengan nama yang persis sama.
Untuk menjalankan server Valkey secara manual dengan mode TLS (dengan asumsi ./gen-test-certs.sh
dipanggil sehingga contoh sertifikat/kunci tersedia):
Mode bawaan 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
Mode modul 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
Perhatikan bahwa Anda dapat menonaktifkan TCP dengan menentukan --port 0
secara eksplisit. TCP dan TLS juga dapat tersedia secara bersamaan, tetapi Anda harus menetapkan port yang berbeda.
Gunakan valkey-cli
untuk terhubung ke server Valkey:
./src/valkey-cli --tls
--cert ./tests/tls/valkey.crt
--key ./tests/tls/valkey.key
--cacert ./tests/tls/ca.crt
Menentukan --tls-replication yes
membuat replika terhubung ke replika utama.
Menggunakan --tls-cluster yes
membuat Valkey Cluster menggunakan TLS di seluruh node.
Perhatikan bahwa Valkey Over RDMA adalah fitur eksperimental. Itu dapat diubah atau dihapus dalam versi minor atau mayor apa pun. Saat ini, ini hanya didukung di Linux.
Untuk menjalankan server Valkey secara manual dengan mode RDMA:
% ./src/valkey-server --protected-mode no
--loadmodule src/valkey-rdma.so bind=192.168.122.100 port=6379
Dimungkinkan untuk mengubah alamat pengikatan/port RDMA dengan perintah runtime:
192.168.122.100:6379> CONFIG SET rdma.port 6380
RDMA dan TCP juga dapat tersedia, dan tidak ada konflik antara TCP(6379) dan RDMA(6379), Contoh:
% ./src/valkey-server --protected-mode no
--loadmodule src/valkey-rdma.so bind=192.168.122.100 port=6379
--port 6379
Perhatikan bahwa kartu jaringan (192.168.122.100 pada contoh ini) harus mendukung RDMA. Untuk menguji server mendukung RDMA atau tidak:
% rdma res show (a new version iproute2 package)
Atau:
% ibv_devices
Anda dapat menggunakan valkey-cli untuk bermain dengan Valkey. Mulai instance valkey-server, lalu di terminal lain coba yang berikut ini:
% 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>
Untuk menginstal biner Valkey ke/usr/local/bin, cukup gunakan:
% make install
Anda dapat menggunakan make PREFIX=/some/other/directory install
jika Anda ingin menggunakan tujuan yang berbeda.
Catatan : Untuk kompatibilitas dengan Redis, kami membuat symlink dari nama Redis ( redis-server
, redis-cli
, dll.) ke biner Valkey yang diinstal oleh make install
. Symlink dibuat di direktori yang sama dengan biner Valkey. Symlink dihapus saat menggunakan make uninstall
. Pembuatan symlink dapat dilewati dengan mengatur variabel makefile USE_REDIS_SYMLINKS=no
.
make install
hanya akan menginstal binari di sistem Anda, tetapi tidak akan mengonfigurasi skrip init dan file konfigurasi di tempat yang sesuai. Ini tidak diperlukan jika Anda hanya ingin bermain-main sedikit dengan Valkey, tetapi jika Anda menginstalnya dengan cara yang tepat untuk sistem produksi, kami memiliki skrip yang melakukan ini untuk sistem Ubuntu dan Debian:
% cd utils
% ./install_server.sh
Catatan : install_server.sh
tidak akan berfungsi di Mac OSX; itu dibuat hanya untuk Linux.
Script akan menanyakan beberapa pertanyaan dan akan mengatur semua yang Anda perlukan untuk menjalankan Valkey dengan benar sebagai daemon latar belakang yang akan mulai lagi saat sistem di-boot ulang.
Anda dapat menghentikan dan memulai Valkey menggunakan skrip bernama /etc/init.d/valkey_<portnumber>
, misalnya /etc/init.d/valkey_6379
.
CMake
Selain build Makefile
tradisional, Valkey mendukung sistem build alternatif dan eksperimental menggunakan CMake
.
Untuk membangun dan menginstal Valkey
, dalam mode Release
(build yang dioptimalkan), ketikkan ini ke terminal Anda:
mkdir build-release
cd $_
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/valkey
sudo make install
# Valkey is now installed under /opt/valkey
Opsi lain yang didukung oleh sistem build CMake
Valkey:
-DBUILD_TLS=<on|off|module>
aktifkan pembuatan TLS untuk Valkey-DBUILD_RDMA=<off|module>
aktifkan pembuatan modul RDMA (hanya mode modul yang didukung)-DBUILD_MALLOC=<libc|jemalloc|tcmalloc|tcmalloc_minimal>
pilih pengalokasi yang akan digunakan. Default di Linux: jemalloc
, untuk OS lain: libc
-DBUILD_SANITIZER=<address|thread|undefined>
dibuat dengan pembersih alamat diaktifkan-DBUILD_UNIT_TESTS=[1|0]
ketika disetel, build akan menghasilkan valkey-unit-tests
yang dapat dieksekusi-DBUILD_TEST_MODULES=[1|0]
ketika disetel, build akan menyertakan modul yang terletak di bawah folder tests/modules
-DBUILD_EXAMPLE_MODULES=[1|0]
ketika disetel, build akan menyertakan modul contoh yang terletak di bawah folder src/modules
-DCMAKE_BUILD_TYPE=<Debug|Release...>
tentukan tipe build, lihat manual CMake untuk lebih jelasnya-DCMAKE_INSTALL_PREFIX=/installation/path
ganti nilai ini untuk menentukan awalan pemasangan khusus. Bawaan: /usr/local
-G<Generator Name>
menghasilkan file build untuk "Nama Generator". Secara default, CMake akan menghasilkan Makefile
s. CMake
menghasilkan keluaran berwarna yang mudah digunakan secara default. Jika Anda ingin melihat keluaran yang lebih bertele-tele, gunakan yang berikut ini:
make VERBOSE=1
Selama tahap CMake
, CMake
menyimpan variabel dalam cache dalam file lokal bernama CMakeCache.txt
. Semua variabel yang dihasilkan oleh Valkey dihapus dari cache setelah digunakan (ini dilakukan dengan memanggil unset(VAR-NAME CACHE)
). Namun, beberapa variabel, seperti jalur kompiler, disimpan dalam cache. Untuk memulai build baru, hapus file cache CMakeCache.txt
dari folder build, atau hapus folder build sepenuhnya.
Penting untuk menjalankan kembali CMake
saat menambahkan file sumber baru.
Selama tahap CMake
pembangunan, CMake
menghasilkan file JSON bernama compile_commands.json
dan menempatkannya di bawah folder build. File ini digunakan oleh banyak IDE dan editor teks untuk menyediakan penyelesaian kode (melalui clangd
).
Peringatan kecilnya adalah alat ini akan mencari compile_commands.json
di bawah folder teratas Valkey. Solusi umum adalah dengan membuat tautan simbolik ke sana:
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
Mulai ulang IDE Anda dan voila
Silakan lihat KONTRIBUSI.md. Untuk bug dan kerentanan keamanan, silakan lihat SECURITY.md.
Valkey Serangkaian Proyek LF, LLC 2810 N Church St, PMB 57274 Wilmington, Delaware 19802-4447