- Redka, Redis'in avantajlarını SQLite üzerinde yeniden hayata geçirirken Redis API'siyle uyumlu olmayı hedefliyor
- Başlıca özellikler:
- Verilerin RAM boyutuna sığması gerekmiyor
- ACID işlemleri desteği
- SQL görünümleri üzerinden veri sorgulama ve raporlama yetenekleri güçlendirildi
- Hem in-process (Go API) hem de standalone (RESP) sunucu desteği
- Redis uyumlu komutlar ve protokol desteği
- Şu anda aktif geliştirme altında; destek durumu ve yol haritası için aşağıdaki belgelere bakın
Desteklenen komutlar
- Redka, Redis'in 5 temel veri tipini desteklemeyi hedefliyor: String, List, Set, Hash, Sorted Set
- String, Hash, anahtar yönetimi ve işlem komutları zaten destekleniyor; List, Set ve Sorted Set ise geliştirme aşamasında
- Ayrıntılı komut listesi için özgün metne bakın
Kurulum
Bağımsız çalışan sunucu
- Release sayfasından işletim sisteminize uygun ikili dosyayı indirip çalıştırın
- Docker kullanacaksanız imajı
docker pull nalgeon/redka ile indirin
Go modülü
- Modülü
go get github.com/nalgeon/redka ile kurun
- SQLite sürücüsü olarak
github.com/mattn/go-sqlite3 veya modernc.org/sqlite kullanın
Kullanım
Bağımsız çalışan sunucu
- İndirdiğiniz ikili dosyayı
redka [-h host] [-p port] [db-path] biçiminde çalıştırın
- Varsayılan değerler: host
localhost, port 6379, DB yolu yok (bellek içi)
- Docker kullanıyorsanız
docker run komutuyla çalıştırın. Ayrıntılı seçenekler için özgün metne bakın
- Sunucu çalıştıktan sonra
redis-cli, redis-py, go-redis gibi Redis uyumlu istemcilerle bağlanabilirsiniz
In-process sunucu
redka.Open() fonksiyonuyla bir DB nesnesi oluşturun. Sürücünün import edilmesi zorunludur
- Çeşitli komutları çalıştırmak için
redka.DB nesnesinin metotlarını çağırın
- İşlemleri
View (salt okunur) ve Update (yazılabilir) metotlarıyla yönetin
Kalıcılık
- Redka verileri SQLite veritabanında
rkey, rstring, rhash tablolarını kullanarak saklar
- Her veri tipi için
vstring, vhash gibi görünümler üzerinden verilere SQL ile erişilebilir
Performans
- Redis ve Redka performansı
redis-benchmark aracıyla karşılaştırılmış
- Redka, SET'te yaklaşık 6 kat, GET'te ise yaklaşık 2 kat daha yavaş
- Buna rağmen saniyede 23K yazma, 57K okuma düzeyinde performans gösteriyor
- Konteyner içinde çalıştırıldığında performans düşüşü olabilir
Yol haritası
- 1.0 sürümünde Redis 2.x döneminin ana özelliklerine odaklanan bir uygulama planlanıyor
- String, Hash, anahtar yönetimi ve işlem desteği tamamlandı
- Sorted Set geliştirme aşamasında
- List ve Set planlanıyor
- Gelecek sürümlerde Stream, HyperLogLog, Geo gibi veri tipleri ile Pub/Sub özelliğinin eklenmesi planlanıyor
- Lua scripting, authentication/ACL, multi DB, Watch/Unwatch gibi özelliklerin uygulanması planlanmıyor
- Cluster ve Sentinel özellikleri de uygulanmayacak
GN⁺ görüşü
- Redis ile büyük ölçüde uyumlu olurken kalıcılık da sunan Redka'nın yaklaşımı ilgi çekici. ACID işlemlerini desteklemesi de bir avantaj olabilir.
- Performans açısından Redis'in gerisinde kalsa da, kalıcılığın gerekli olduğu durumlarda değerlendirmeye değer bir alternatif gibi görünüyor.
- Ancak henüz geliştirme sürecinin başlarında olduğu için kararlılık açısından biraz daha izlemek gerekiyor; ayrıca yol haritasında yer almayan epey özellik olması da gerçek kullanımda dikkate alınmalı.
- Bellek içi kullanım için sonuçta Redis'i geçmesi zor, ancak SQLite tabanlı bir kalıcılık katmanı olarak faydalı olabilir.
- Son dönemde edge computing ortamlarında hafifletilmiş stack'lere olan talep artıyor; böyle alanlarda Redis yerine Redka denenebilir.
2 yorum
Zamanlayıcıya Redis bağlanması gerektiğinde kullanışlı olabilir gibi görünüyor :)
Hacker News görüşleri
SetMaxConnections(1)kullanıyorsanız, SQLite WAL modunda (ki burada kullanılıyor) okumaları engellemeyen yazmaları desteklediğinden, okuma eşzamanlılığına izin vermenin faydası olabilir