Duyurular

HotKV'ye Giriş

HotKV'yi neden geliştirdim: modern C++ ile sıfırdan yazılmış, çok iş parçacıklı ve Redis uyumlu bir veri deposu. Bugün neler sunuyor ve kıyaslamada nasıl performans gösterdi.

HotKV'ye giriş: sıcak çalışan anahtar-değer deposu.

HotKV, modern C++ ile sıfırdan yazılmış, çok iş parçacıklı ve Redis uyumlu bir veri deposudur; modern çok çekirdekli sunuculardan en yüksek hızı mümkün olan en düşük maliyetle almak için geliştirildi. Ben HotKV Ltd'nin kurucusu ve CEO'su Norbert E. Boros. Bu yazı onu neden geliştirdiğimi, bugün neler yaptığını ve nasıl ölçüldüğünü anlatıyor.

Kısaca. HotKV, tek bir süreç içinde komutları aynı anda birçok iş parçacığında çalıştırır ve Redis protokolü olan RESP2 ile RESP3'ü konuşur. Ekim 2026'daki, 160 vCPU üzerinde tek örnekli kıyaslamamızda ölçtüğümüz 12 komutun 11'inde en yüksek verime sahipti; on ikincisinde ise Dragonfly ile eşitti. Kurulum ve sınırları aşağıda anlatılıyor.

HotKV'yi neden geliştirdim

Geliştirdiğim her şeyde hıza önem veririm. Bir web sitesi, bir araç ya da bir sunucu anında yanıt vermeli; vermiyorsa nedenini bilmek isterim. Bu alışkanlık, yazılım yazmaya başladığımdan beri çalışmalarımı şekillendirdi.

C ve C++ uzun yıllardır ana dillerim. Neredeyse on yıl boyunca, binlerce oyuncunun bilgisayarında çalışan oyun hile önleme yazılımları üzerinde çalıştım. Hileler için belleği taramak zorundaydı ve bunu mümkün olan en az CPU ve bellekle yapmalıydı, çünkü harcadığı her çevrim oyundan alınıyordu. Bu iş bana her şeyi ölçmeyi, tasarımı donanıma göre yapmayı ve düşük kaynak kullanımına başlı başına bir özellik olarak bakmayı öğretti.

Bununla birlikte, hızlı bir önbelleğe ihtiyaç duyan birçok projede Redis ve Valkey kullandım: oturum depoları, bir güvenlik duvarının engellediği IP adresi listeleri ve yüz milyonlarca SQL Server kaydının önünde bir önbellek. Bunlar mükemmel araçlardır. Ama aynı zamanda, bir anahtar-değer deposu baştan bugün çalıştırdığımız çok çekirdekli sunucular için tasarlansaydı neler yapabileceğini merak etmemi sağladılar.

HotKV, vardığım yanıt. Donanımdan mümkün olan en yüksek hızı, mümkün olan en düşük maliyetle almak için onu modern C++ ile sıfırdan yazdım. Aşağıdaki kıyaslama bugün nerede durduğunu gösteriyor ve kazanılacak daha çok şey olduğunu düşünüyorum.

Yapay zekanın maliyeti

İkinci bir neden daha vardı. Yapay zeka uygulamaları çalıştırmak benim için ve geliştiricilerin çevrimiçi paylaştıklarına bakılırsa birçok başkası için pahalı hale geliyordu. Bu maliyetin büyük kısmı çoğu zaman bir modele zaten yanıtladığı soruları göndermekten gelir. Tekrarlanan ya da benzer bir soruyu tanıyıp önbellekten yanıtlayan hızlı bir depo, bu faturayı düşürmenin en doğrudan yollarından biridir; yapay zeka iş yükleri için önbellekleme de HotKV'nin temel bir parçası bu yüzden.

HotKV ne işe yarar

HotKV Ltd, bu tür yazılımı daha performanslı ve daha uygun fiyatlı kılmak için var. Modern sunucuların çok sayıda çekirdeği var ve bir veri deposu bunları kullanmalı; böylece mümkün olan en yüksek hızı mümkün olan en düşük maliyetle alırsınız.

İkinci fikir, yığının daha fazlasını tek bir yerde tutmak. LLM'ler üzerine geliştirme yapan ekipler çoğu zaman bir önbellek, bir vektör veritabanı ve ajan belleğini tutacak bir yer çalıştırır, aralarında da bir yığın yapıştırma kodu bulunur. Önbelleklemenin ve etrafındaki yapay zeka işinin, verinizin yanında tek bir motorda yaşamasını istiyorum: model çağrılarının birebir ve anlamsal önbelleklenmesi, vektör arama, ajan belleği ve token bütçeleri. Çalıştırılacak sistemlerin azalması, daha az hareketli parça ve daha düşük bir fatura anlamına gelmeli. Yapay zeka sayfası bugün neyin mevcut olduğunu listeliyor, token tasarrufu kıyaslaması ise model çağrılarını önbelleklemenin testimizde ne kadar tasarruf ettirdiğini gösteriyor.

HotKV, Redis protokolünü ve tanıdık istemci kitaplıklarını korur.

Sorun

Tek bir komut yürütme iş parçacığı, çok çekirdekli bir makinede darboğaz haline gelebilir. Tek bir yürütme iş parçacığı etrafında kurulmuş bir veri deposu, makinenin geri kalanına genellikle birkaç örnek ya da bir küme çalıştırarak ulaşır ve bu da dağıtım tercihlerini ve operasyonel işi beraberinde getirir. HotKV'nin diğer uçtan başlamasını istedim: komutlar tek bir örnek içinde eşzamanlı çalışsın ki tek bir süreç makinenin tamamını kullanabilsin.

HotKV neyi farklı yapıyor

HotKV™, C++20 ile yazılmıştır ve komutları aynı anda birçok çekirdekte çalıştıracak şekilde tasarlanmıştır; böylece tek bir örnek makinenin tamamından yararlanabilir. Aşağıda kıyasladığımız Dragonfly de çok iş parçacıklı bir yaklaşım benimser.

  • Çok çekirdek, tek örnek. Komutlar makinenin çekirdekleri boyunca eşzamanlı çalışır; böylece tek bir örnek, birkaç küçük sunucu yerine büyük bir sunucuyu kullanabilir.
  • Tanıdık istemciler ve protokol. HotKV, RESP2 ve RESP3'ü destekler; böylece tanıdık istemci kitaplıkları ona bağlanabilir. İşlemler (MULTI/EXEC) ve Lua betikleme desteklenir. Desteklenen komutlar ve farklılıklar için komut belgelerine bakın.

Nasıl geliştirildi ve test edildi

HotKV'yi kendim geliştiriyorum ve yardımcı olduğu yerde yapay zeka desteği kullanıyorum. Bir satırın nasıl yazıldığından çok, dayanıklı olup olmadığı önemlidir; bu yüzden motor sıkı biçimde test edilir. 2.000'den fazla otomatik testi vardır ve AddressSanitizer, ThreadSanitizer ve UndefinedBehaviorSanitizer altında derlenir. Ayrıca protokol ayrıştırıcısı, komut yönlendirme, RDB ve AOF yükleme, çoğaltma akışı ve küme veriyolu için fuzz hedefleri de vardır.

Kıyaslama kurulumu, sınırları ve tüm sonuçlar Performans sayfasında yer alıyor; böylece sayıları kendiniz değerlendirebilirsiniz.

Kıyaslama özeti

Ekim 2026'da güncellendi: bu yazıda ilk yayımlanan rakamlar, sonradan kusurlu olduğunu fark ettiğimiz kıyaslama çalıştırmalarından geliyordu (diğer şeylerin yanı sıra her yük üreticisi aynı rastgele tohumu kullanıyordu); bu yüzden onları yeniden kurduğumuz kıyaslamanın sonuçlarıyla değiştirdik.

Ekim 2026: HotKV, Redis, Valkey ve Dragonfly

Bu kıyaslamayı HotKV Ltd yaptı. Kaynaktan derlenmiş HotKV'yi Redis 8.10.2, Valkey 9.1.2 ve Dragonfly 2.0.2'ye karşı ölçtük. Her sunucu tek başına, kalıcılık kapalıyken, bir Azure D160alds_v7'nin (AMD EPYC 9V45) 160 vCPU'sunun tamamında tek örnek olarak çalıştı. Üç ayrı 64 vCPU'lu makine yükü memtier_benchmark ile üretti: 256 baytlık değerler, 30 işlem hattı derinliği ve önceden doldurulmuş 5.000.000 anahtar. Her rakam, üç adet 10 saniyelik çalıştırmanın ortancasıdır.

HotKV 12 komutun 11'inde en yüksek verime sahipti. Redis veya Valkey'e karşı, komuta ve sunucuya bağlı olarak onların veriminin 8,6 ile en az 69,7 katı arasında ölçüldü; Dragonfly'a karşı bu 11 komutta 1,97 ile 4,41 kat arasındaydı ve bunların birkaçı alt sınırdır. PING'de Dragonfly yüzde 0,6 önde ölçüldü. Yük üreticileri kendi sınırlarına yakın olduğu için bunu beraberlik sayıyoruz. Bir veri komutundaki en yüksek rakam saniyede 90,8 milyon INCR işlemiydi. INCR ve PING az veri taşır ve yük üreticileri tarafından sınırlanır; bu yüzden HotKV'nin kendi rakamı onlar için daha yüksek olabilir.

KomutHotKV (milyon işlem/sn)HotKV ve RedisHotKV ve ValkeyHotKV ve Dragonfly
SET50,5≥ 14,80x≥ 17,51x≥ 3,36x
GET36,6≥ 32,34x≥ 22,46x≥ 2,73x
MGET4,616,61x8,60x1,97x
SETNX55,3≥ 39,58x≥ 29,73x≥ 3,83x
APPEND25,116,37x19,41x2,83x
INCR90,843,15x47,33x4,41x
LPUSH31,625,34x37,55x2,99x
RPUSH43,8≥ 69,67x≥ 49,83x≥ 3,97x
SADD50,6≥ 24,65x≥ 56,60x≥ 4,20x
HSET29,0≥ 54,05x≥ 37,09x≥ 2,96x
MSET11,3≥ 29,78x≥ 24,26x≥ 3,83x
PING125,2≥ 38,70x≥ 35,98x0,99x (beraberlik)

Tabloyu okumak

MGET komut başına sekiz anahtar okur ve MSET dört anahtar-değer çifti yazar; verim ise komutları sayar. Rapor, yedi HotKV rakamını (GET ve altı yazma komutu) ağ kullanımı için belirlediği yüzde 85 eşiğine ulaştıkları için, PING'i ise yük üreticileri yüzde 85'in üzerinde CPU'daydı diye işaretler. Bunlara dayanan oranlar alt sınırlardır ve ≥ ile işaretlenmiştir. GET ve PING gerçek sınırlardır. Altı yazma komutu için raporun ağ kullanımı rakamı gelen ve giden trafiği toplar ve giden sınırla karşılaştırır; bu yüzden bir sınıra ne kadar yakın olduklarını olduğundan fazla gösterir. En ağır olanı, SETNX, ölçülen gelen tavanın en fazla yüzde 80'ini kullandı. Onlarda ≥ işaretini temkinli bir kural olarak koruyoruz. Tüm tablolar, işaretler ve yöntem notları Performans sayfasındadır.

Kıyaslamanın kapsamı

  • Derleme ve ayar. HotKV test CPU'su için -march=native ile derlendi; diğer sunucular ise standart sürüm derlemeleriydi.
  • İş parçacığı ayarları. Her sunucuya makinenin tüm çekirdekleri verildi: HotKV --threads 160, Dragonfly 160 proactor iş parçacığı, Valkey io-threads 160 ve Redis io-threads 128, yani en fazla değeri. Redis ve Valkey komutları tek iş parçacığında çalıştırır ve daha az G/Ç iş parçacığıyla daha yüksek verime ulaşabilir; bu yüzden rakamları en iyi değerlerinin altında olabilir. Onların kümelerini ya da birkaç örneğini çalıştırmadık.
  • Kapsam. On iki komut, tek bir değer boyutu, tek bir işlem hattı derinliği, TLS yok ve kalıcılık yok. LPOP ve RPOP ölçülmedi, çünkü bu hızlarda yıkıcı bir okuma, belleğe sığan her listeyi 10 saniye içinde boşaltır. Rapor gecikmeyi ve bellek kullanımını kaydeder, ancak burada onları karşılaştırmıyoruz. Sunucular her 10 saniyelik çalıştırmada çok farklı miktarda iş yaptı, bu yüzden bellek rakamları aynı koşullarda değildir. Karma iş yükleri ölçülmedi.
  • Değişkenlik. Redis, birkaç komutta üç çalıştırması arasında çok büyük farklılık gösterdi; HSET'te en hızlı ve en yavaş çalıştırması arasında 7,2 kata kadar ve ortanca bunu gizler. Her rakibin ortancası yerine en hızlı çalıştırmasıyla karşılaştırıldığında da HotKV 11 komutun hepsinde önde kaldı.

Redis, Valkey ve Dragonfly ilgili sahiplerinin ticari markalarıdır. Yalnızca ölçtüğümüz yazılımı belirtmek için anılırlar ve bu, herhangi bir sponsorluk, onay veya bağlantı anlamına gelmez.

Bugün neler sunuluyor

Çekirdek komut aileleri arasında dizeler, listeler, kümeler, hash'ler, sıralı kümeler, akışlar, coğrafi dizinler, bit eşlemler, HyperLogLog, pub/sub ve Lua betikleme bulunur. Yapay zeka modülleri ve kurumsal özellikler lisanslı planlarda çalışır. Fiyatlandırma her planın neleri içerdiğini listeler. Güncel komut kapsamı için belgelere bakın. Redis komut setinin ötesinde:

  • Anahtar etiketleme: anahtarları rastgele etiketlerle işaretleyin ve etikete göre sorgulayın (TAG.SET, TAG.MEMBERS ve beş komut daha).
  • Nanosaniye TTL: NEXPIRE, NTTL ve NEXPIREAT sona erme süresini nanosaniye cinsinden ayarlar ve okur; böylece son tarihler bir milisaniyeden daha ince olabilir. Süresi dolan anahtarlar arka plan taramasıyla ve erişildiklerinde geri kazanılır.
  • İsteğe bağlı değer sıkıştırma: bir boyut eşiğinin (varsayılan olarak 512 bayt) üzerindeki değerler için; siz açmadıkça kapalıdır.
  • Çatalsız anlık görüntüler: BGSAVE, çatallanmış bir süreç yerine arka plan iş parçacığında yazar. Bir anlık görüntü, belirli bir ana ait kopya değildir. Her anahtar, anlık görüntü ona ulaştığındaki haliyle kaydedilir. Yalnızca eklemeli dosyanın yeniden yazılması çatallanır.
  • Prometheus metrikleri: yerleşik bir HTTP uç noktası; varsayılan olarak kapalıdır ve metrics-port ile etkinleştirilir; bu yüzden harici bir dışa aktarıcıya gerek yoktur.

HotKV ayrıca HNSW dizinli yerleşik vektör aramaya da sahiptir (VSIM.CREATEINDEX, VSIM.SET, VSIM.SEARCH). Bunu Vektör arama: HotKV ve Redis 8 vektör kümeleri, 1 ile 100 istemci arasında yazısında Redis 8'e karşı ölçtük.

HotKV Cloud ile başlayın ya da HotKV'yi kendi sunucularınızda çalıştırmak için satışla konuşun.

Bunu faydalı buldunuz mu?

Makaleyi paylaşın

Sohbete devam edin

Yorumlar

Yöntemle ilgili sorularınız mı var? Donanımınızda farklı bir sonuç mu aldınız? Bulduklarınızı paylaşın. Yorumlar görünmeden önce incelenir.

Yorum bırakın

Görünen adınız ve yorumunuz onaydan sonra herkese açık olur. E-posta adresiniz yalnızca yukarıdaki güncellemeler için kullanılır ve asla gösterilmez. Cloudflare Turnstile, yazmaya başladığınızda spam denetimi yapar. Gizlilik ayrıntıları.