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

Akurasi perintah redis dbsize

Saya akan mengatakan itu terkait dengan kedaluwarsa kunci.

Penyimpanan kunci/nilai seperti Redis atau memcached tidak dapat menentukan timer fisik per objek untuk kedaluwarsa. Akan ada terlalu banyak dari mereka. Alih-alih, mereka menentukan struktur data untuk dengan mudah melacak item yang akan kedaluwarsa, dan menggandakan semua peristiwa kedaluwarsa ke satu pengatur waktu fisik. Mereka juga cenderung menerapkan strategi malas untuk menghadapi peristiwa ini.

Dengan Redis, saat item kedaluwarsa, tidak ada yang terjadi. Namun, sebelum setiap item mengakses, pemeriksaan dilakukan secara sistematis untuk menghindari pengembalian item yang kedaluwarsa, dan berpotensi menghapus item tersebut. Di atas strategi malas ini, setiap 100 md, algoritme pemulung dipicu untuk secara fisik kedaluwarsa sejumlah item (yaitu menghapusnya dari kamus utama). Jumlah kunci yang dipertimbangkan pada setiap iterasi bergantung pada beban kerja kedaluwarsa (algoritme bersifat adaptif).

Konsekuensinya adalah Redis mungkin memiliki simpanan item yang akan kedaluwarsa pada titik waktu tertentu, ketika Anda memiliki aliran peristiwa kedaluwarsa yang stabil.

Sekarang kembali ke pertanyaan, perintah DBSIZE hanya mengembalikan ukuran kamus utama, jadi itu termasuk item kedaluwarsa yang belum dihapus. Perintah KEYS menelusuri seluruh kamus, mengakses kunci individual, sehingga mengecualikan semua item yang kedaluwarsa. Oleh karena itu, jumlah item mungkin tidak cocok.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. LuaSocket, Lua 5.2 dan Redis

  2. Mengoptimalkan Permintaan ImageMagick bersamaan menggunakan redis/php-resque

  3. Membuat set baru dari rentang Set Terurut di Redis

  4. Cara mengatur kedaluwarsa kunci hash di redis sesuai dengan keberadaan kunci

  5. Koneksi redis hilang dari acara dekat