- Redka bertujuan untuk mengimplementasikan kembali keunggulan Redis di atas SQLite sambil tetap kompatibel dengan API Redis
- Fitur utama:
- Data tidak perlu muat dalam ukuran RAM
- Mendukung transaksi ACID
- Memperkuat kemampuan kueri data dan pelaporan melalui view SQL
- Mendukung server in-process (Go API) maupun standalone (RESP)
- Mendukung perintah dan protokol yang kompatibel dengan Redis
- Saat ini masih dalam pengembangan, dan status dukungan serta roadmap dapat dilihat pada dokumen di bawah
Perintah yang Didukung
- Redka menargetkan dukungan untuk lima tipe data inti Redis: String, List, Set, Hash, dan Sorted Set
- String, Hash, pengelolaan Key, dan perintah transaksi sudah didukung, sementara List, Set, dan Sorted Set masih dalam pengembangan
- Untuk daftar perintah yang lebih rinci, lihat sumber asli
Cara Instalasi
Server standalone
- Unduh file biner yang sesuai dengan OS dari halaman Release lalu jalankan
- Jika menggunakan Docker, unduh image dengan
docker pull nalgeon/redka
Modul Go
- Instal modul dengan
go get github.com/nalgeon/redka
- Gunakan
github.com/mattn/go-sqlite3 atau modernc.org/sqlite sebagai driver SQLite
Cara Penggunaan
Server standalone
- Jalankan file biner yang telah diunduh dalam bentuk
redka [-h host] [-p port] [db-path]
- Nilai bawaan: host
localhost, port 6379, tanpa path DB (in-memory)
- Jika memakai Docker, jalankan dengan perintah
docker run. Untuk opsi lebih rinci, lihat sumber asli
- Setelah server berjalan, koneksi dapat dilakukan dengan klien yang kompatibel dengan Redis seperti
redis-cli, redis-py, atau go-redis
Server in-process
- Buat objek DB dengan fungsi
redka.Open(). Import driver wajib dilakukan
- Jalankan berbagai perintah dengan memanggil method pada objek
redka.DB
- Tangani transaksi dengan method
View (read-only) dan Update (dapat menulis)
Persistensi
- Redka menyimpan data di database SQLite menggunakan tabel rkey, rstring, dan rhash
- Data dapat diambil lewat SQL melalui view untuk tiap tipe data (vstring, vhash, dll.)
Performa
- Performa Redis dan Redka dibandingkan menggunakan alat redis-benchmark
- Redka sekitar 6 kali lebih lambat untuk SET, dan sekitar 2 kali lebih lambat untuk GET
- Meski begitu, tetap menunjukkan performa sekitar 23K writes/detik dan 57K reads/detik
- Saat dijalankan di container, performa bisa menurun
Roadmap
- Pada rilis 1.0, implementasi direncanakan berfokus pada fitur utama era Redis 2.x
- Dukungan untuk String, Hash, pengelolaan Key, dan transaksi sudah selesai
- Sorted Set sedang dikembangkan
- List dan Set direncanakan untuk dikembangkan
- Pada versi mendatang, tipe data seperti Stream, HyperLogLog, Geo, serta fitur Pub/Sub akan ditambahkan
- Lua scripting, autentikasi/ACL, multi-DB, Watch/Unwatch, dan lainnya tidak direncanakan untuk diimplementasikan
- Fitur cluster dan sentinel juga tidak akan diimplementasikan
Pendapat GN⁺
- Pendekatan Redka yang tetap kompatibel dengan sebagian besar Redis sambil menyediakan persistensi terasa menarik. Dukungan transaksi ACID juga tampak menjadi nilai plus.
- Dari sisi performa memang belum menyamai Redis, tetapi jika yang dibutuhkan adalah persistensi, ini tampak cukup layak dipertimbangkan sebagai alternatif.
- Namun karena masih berada pada tahap awal pengembangan, stabilitasnya masih perlu diamati lebih lanjut, dan cukup banyak fitur yang tidak masuk roadmap perlu dipertimbangkan saat adopsi nyata.
- Untuk penggunaan in-memory, tentu sulit menyaingi Redis, tetapi sebagai lapisan persistensi berbasis SQLite, Redka tampaknya bisa berguna.
- Belakangan ini permintaan terhadap stack yang ringan di lingkungan edge computing meningkat, dan di area seperti itu Redka mungkin bisa dicoba sebagai pengganti Redis.
2 komentar
Sepertinya akan berguna dipakai saat scheduler perlu terhubung ke Redis, hehe
Komentar Hacker News