โปรเจ็กต์นี้แยกจากโปรเจ็กต์ Redis โอเพ่นซอร์สก่อนที่จะเปลี่ยนไปใช้ใบอนุญาตจากแหล่งที่มาใหม่
README นี้เป็นเพียงเอกสาร เริ่มต้นอย่าง รวดเร็ว รายละเอียดเพิ่มเติมสามารถพบได้ใน valkey.io
Valkey เป็นเซิร์ฟเวอร์โครงสร้างข้อมูลที่มีประสิทธิภาพสูงซึ่งให้บริการปริมาณงานคีย์/ค่าเป็นหลัก รองรับโครงสร้างดั้งเดิมที่หลากหลายและระบบปลั๊กอินที่ขยายได้สำหรับการเพิ่มโครงสร้างข้อมูลใหม่และรูปแบบการเข้าถึง
Makefile
Valkey สามารถคอมไพล์และใช้งานบน Linux, OSX, OpenBSD, NetBSD, FreeBSD เรารองรับสถาปัตยกรรม big endian และ little endian และทั้งระบบ 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"
คุณสามารถสร้างไบนารี Valkey 32 บิตได้โดยใช้:
% 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 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
ฯลฯ ) ไปยังไบนารี Valkey ที่ติดตั้งโดย make install
ลิงก์สัญลักษณ์ถูกสร้างขึ้นในไดเร็กทอรีเดียวกับไบนารีของ Valkey ลิงก์สัญลักษณ์จะถูกลบออกเมื่อใช้ make uninstall
การสร้าง symlink สามารถข้ามได้โดยการตั้งค่าตัวแปร 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
ตัวเลือกอื่น ๆ ที่สนับสนุนโดยระบบการสร้าง CMake
ของ Valkey:
-DBUILD_TLS=<on|off|module>
เปิดใช้งาน TLS build สำหรับ Valkey-DBUILD_RDMA=<off|module>
เปิดใช้งานการสร้างโมดูล RDMA (รองรับเฉพาะโหมดโมดูลเท่านั้น)-DBUILD_MALLOC=<libc|jemalloc|tcmalloc|tcmalloc_minimal>
เลือกตัวจัดสรรที่จะใช้ ค่าเริ่มต้นบน Linux: jemalloc
สำหรับระบบปฏิบัติการอื่น: libc
-DBUILD_SANITIZER=<address|thread|undefined>
build พร้อมเปิดใช้งาน address sanitizer-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
s 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 ของคุณและ voila
โปรดดูที่ CONTRIBUTING.md สำหรับข้อบกพร่องด้านความปลอดภัยและช่องโหว่ โปรดดูที่ SECURITY.md
Valkey a Series of LF Projects, LLC 2810 N Church St, PMB 57274 วิลมิงตัน เดลาแวร์ 19802-4447