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

Redis AOF fsync (SELALU) vs. pohon LSM

LSM adalah AOF yang terkadang ingin Anda baca. Anda melakukan beberapa pekerjaan overhead sehingga Anda dapat membacanya lebih cepat nanti. Redis dirancang agar Anda tidak pernah atau hanya dalam kasus khusus membacanya. Di sisi lain, Cassandra sering membacanya untuk melayani permintaan.

Dan apa yang Redis sebut lambat sebenarnya sangat sangat cepat untuk db seperti Cassandra.

============================PEMBARUAN

Ternyata, saya terlalu cepat mengambil kesimpulan. Dari sudut pandang desain, semuanya di atas benar, tetapi implementasinya sangat berbeda. Meskipun Cassandra mengklaim daya tahan mutlak, itu tidak fsync pada setiap transaksi dan tidak ada cara untuk memaksanya melakukannya (tetapi setiap transaksi dapat disinkronkan). Yang terbaik yang bisa saya lakukan adalah 'fsync dalam mode batch setidaknya 1 ms setelah fsync sebelumnya'. Itu berarti untuk 4 utas benchmark yang saya gunakan sedang melakukan 4 penulisan per fsync dan utas sedang menunggu fsync selesai. Di sisi lain, Redis melakukan fsync pada setiap penulisan, jadi 4 kali lebih sering. Dengan penambahan lebih banyak utas dan lebih banyak partisi meja, Cassandra bisa menang lebih besar. Tetapi perhatikan, bahwa kasus penggunaan yang Anda jelaskan tidak khas. Dan perbedaan arsitektur lainnya (Cassandra pandai mempartisi, Redis pandai menghitung, LUA dan lainnya) masih berlaku.

Angka:

Perintah redis:set(KEY + (tstate.i++), TEXT);

Perintah Cassandra:execute("insert into test.test (id,data) values (?,?)", state.i++, TEXT)

Dimana TEXT = "Wake up, Neo. We have updated our privacy policy."

Redis fsync setiap detik, HDD

Benchmark              (address)   Mode  Cnt      Score      Error  Units
LettuceThreads.shared  localhost  thrpt   15  97535.900 ± 2188.862  ops/s

  97535.900 ±(99.9%) 2188.862 ops/s [Average]
  (min, avg, max) = (94460.868, 97535.900, 100983.563), stdev = 2047.463
  CI (99.9%): [95347.038, 99724.761] (assumes normal distribution)

Redis fsync setiap penulisan, HDD

Benchmark              (address)   Mode  Cnt   Score   Error  Units
LettuceThreads.shared  localhost  thrpt   15  48.862 ± 2.237  ops/s

  48.862 ±(99.9%) 2.237 ops/s [Average]
  (min, avg, max) = (47.912, 48.862, 56.351), stdev = 2.092
  CI (99.9%): [46.625, 51.098] (assumes normal distribution)

Redis, fsync setiap penulisan, NVMe (Samsung 960 PRO 1tb)

Benchmark              (address)   Mode  Cnt    Score   Error  Units
LettuceThreads.shared     remote  thrpt   15  449.248 ± 6.475  ops/s

  449.248 ±(99.9%) 6.475 ops/s [Average]
  (min, avg, max) = (441.206, 449.248, 462.817), stdev = 6.057
  CI (99.9%): [442.773, 455.724] (assumes normal distribution)

Cassandra, fsync setiap detik,HDD

Benchmark                  Mode  Cnt      Score     Error  Units
CassandraBenchMain.write  thrpt   15  12016.250 ± 601.811  ops/s

  12016.250 ±(99.9%) 601.811 ops/s [Average]
  (min, avg, max) = (10237.077, 12016.250, 12496.275), stdev = 562.935
  CI (99.9%): [11414.439, 12618.062] (assumes normal distribution)

Cassandra, fsync setiap batch, tetapi tunggu setidaknya 1 ms, HDD

Benchmark                  Mode  Cnt    Score   Error  Units
CassandraBenchMain.write  thrpt   15  195.331 ± 3.695  ops/s

  195.331 ±(99.9%) 3.695 ops/s [Average]
  (min, avg, max) = (186.963, 195.331, 199.312), stdev = 3.456
  CI (99.9%): [191.637, 199.026] (assumes normal distribution)


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Copot pemasangan Redis di Mac OSX. Versi lama berjalan setelah menginstal pembaruan

  2. Penyimpanan NFS Kubernetes menggunakan PV dan PVC

  3. Bagaimana cara menyalurkan di node.js ke redis?

  4. Tidak dapat mengikat pendengar TCP *:6379 menggunakan Redis di Windows

  5. Merancang aplikasi dengan Redis sebagai penyimpan data. Apa? Mengapa?