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

Performa Redis vs Disk dalam aplikasi caching

Ini adalah perbandingan apel dengan jeruk. Lihat http://redis.io/topics/benchmarks

Redis adalah jarak jauh efficient yang efisien penyimpanan data. Setiap kali perintah dijalankan di Redis, sebuah pesan dikirim ke server Redis, dan jika klien sinkron, ia memblokir menunggu balasan. Jadi di luar biaya perintah itu sendiri, Anda akan membayar untuk perjalanan pulang pergi jaringan atau IPC.

Pada perangkat keras modern, perjalanan pulang pergi jaringan atau IPC ternyata sangat mahal dibandingkan dengan operasi lain. Hal ini disebabkan oleh beberapa faktor:

  • latensi mentah media (terutama untuk jaringan)
  • latensi penjadwal sistem operasi (tidak dijamin di Linux/Unix)
  • kehilangan cache memori mahal, dan kemungkinan kehilangan cache meningkat saat proses klien dan server dijadwalkan masuk/keluar.
  • pada kotak kelas atas, NUMA efek samping

Sekarang, mari kita tinjau hasilnya.

Membandingkan implementasi menggunakan generator dan yang menggunakan panggilan fungsi, mereka tidak menghasilkan jumlah perjalanan pulang pergi yang sama ke Redis. Dengan generator Anda hanya memiliki:

    while time.time() - t - expiry < 0:
        yield r.get(fpKey)

Jadi 1 pulang pergi per iterasi. Dengan fungsi tersebut, Anda memiliki:

if r.exists(fpKey):
    return r.get(fpKey)

Jadi 2 perjalanan pulang pergi per iterasi. Pantas saja generatornya lebih cepat.

Tentu saja Anda seharusnya menggunakan kembali koneksi Redis yang sama untuk kinerja yang optimal. Tidak ada gunanya menjalankan benchmark yang secara sistematis menghubungkan/memutuskan.

Terakhir, mengenai perbedaan kinerja antara panggilan Redis dan pembacaan file, Anda cukup membandingkan panggilan lokal dengan panggilan jarak jauh. Pembacaan file di-cache oleh sistem file OS, sehingga merupakan operasi transfer memori yang cepat antara kernel dan Python. Tidak ada disk I/O yang terlibat di sini. Dengan Redis, Anda harus membayar biaya perjalanan pulang pergi, sehingga jauh lebih lambat.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana saya bisa memunculkan objek dari Redis saat ditambahkan secara realtime?

  2. Heroku:Tugas Latar Belakang dengan Python dengan RQ

  3. Bagaimana cara menggunakan redis untuk menyimpan data hierarkis?

  4. Kueri Rentang di Redis - Redis Data Musim Semi

  5. Twisted:mengapa melewatkan panggilan balik yang ditangguhkan ke utas yang ditangguhkan membuat utas tiba-tiba memblokir?