Antirez mengatakan, lihat di https://news.ycombinator.com/item?id=1171423
Ada beberapa alasan:
- Mereka tidak terlalu intensif memori. Terserah Anda pada dasarnya. Mengubah parameter tentang probabilitas sebuah node untuk memiliki sejumlah level tertentu akan membuat memori kurang intensif daripada btrees.
- Set yang diurutkan sering menjadi target dari banyak operasi ZRANGE atau ZREVRANGE, yaitu melintasi daftar lewati sebagai daftar tertaut. Dengan operasi ini, lokalitas cache dari daftar lewati setidaknya sama bagusnya dengan jenis pohon seimbang lainnya.
- Mereka lebih mudah diimplementasikan, di-debug, dan sebagainya. Misalnya berkat kesederhanaan daftar lewati, saya menerima tambalan (sudah ada di master Redis) dengan daftar lewati yang ditambah yang mengimplementasikan ZRANK di O(log(N)). Diperlukan sedikit perubahan pada kode.
Tentang Append Only daya tahan &kecepatan, saya tidak berpikir itu adalah ide yang baik untuk mengoptimalkan Redis dengan biaya lebih banyak kode dan lebih banyak kompleksitas untuk kasus penggunaan yang IMHO harus jarang untuk target Redis (fsync() di setiap perintah) . Hampir tidak ada yang menggunakan fitur ini bahkan dengan database ACID SQL, karena petunjuk kinerjanya besar.
Tentang utas:pengalaman kami menunjukkan bahwa Redis sebagian besar terikat I/O. Saya menggunakan utas untuk menyajikan sesuatu dari Memori Virtual. Solusi jangka panjang untuk mengeksploitasi semua inti, dengan asumsi tautan Anda sangat cepat sehingga Anda dapat menjenuhkan satu inti, menjalankan beberapa contoh Redis (tanpa kunci, hampir sepenuhnya dapat diskalakan secara linier dengan jumlah inti), dan menggunakan "Kluster Redis " solusi yang saya rencanakan untuk dikembangkan di masa depan.