Redis
 sql >> Teknologi Basis Data >  >> NoSQL >> Redis

Mengapa Redis SortedSet menggunakan Skip List daripada Balanced Tree?

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.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. cara menjaga caching tetap up to date

  2. Izin Pemecahan Masalah ditolak saat mencoba menyambung ke Redis dari skrip PHP

  3. Bagaimana cara mengimplementasikan Redis Cache dengan Django Rest Framework?

  4. Predis memberikan 'Kesalahan saat membaca baris dari server'

  5. Bagaimana cara mendefinisikan TTL untuk aliran redis?