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

cara menjaga caching tetap up to date

Karena Anda menggunakan cache, Anda harus mentolerir masalah inkonsistensi data , yaitu pada titik waktu tertentu, data dalam cache berbeda dengan data dalam database.

Anda tidak perlu memperbarui nilai dalam cache, setiap kali nilai telah diubah. Jika tidak, seluruh sistem cache akan menjadi sangat rumit (misalnya Anda harus menyimpan daftar kunci yang telah di-cache), dan mungkin juga tidak perlu melakukannya (misalnya, nilai kunci mungkin hanya digunakan sekali, dan tidak perlu untuk memperbaruinya lagi).

Bagaimana kami dapat memperbarui data dalam cache dan menjaga agar sistem cache tetap sederhana?

Biasanya, selain menyetel atau memperbarui pasangan nilai kunci dalam cache, kami juga menetapkan TIMEOUT untuk setiap kunci . Setelah itu, klien bisa mendapatkan pasangan nilai kunci dari cache. Namun, jika kunci mencapai batas waktu, sistem cache menghapus pasangan nilai kunci dari cache. Ini disebut THE KEY HAS BEEN EXPIRED . Lain kali, klien yang mencoba mendapatkan kunci itu dari cache, tidak akan mendapatkan apa-apa. Ini disebut CACHE MISS . Dalam hal ini, klien harus mendapatkan pasangan nilai kunci dari database, dan memperbaruinya ke cache dengan batas waktu baru.

Jika data sudah terupdate di database, sedangkan key nya belum expired di cache, maka client akan mendapatkan data yang tidak konsisten. Namun, ketika kunci telah kedaluwarsa, nilainya akan diambil dari database dan dimasukkan ke dalam cache oleh beberapa klien. Setelah itu, klien lain akan mendapatkan update data hingga data tersebut diubah kembali.

Bagaimana cara mengatur batas waktu?

Biasanya, ada dua jenis kebijakan kedaluwarsa:

  1. Kedaluwarsa dalam N detik/menit/jam...
  2. Kedaluwarsa di beberapa titik waktu mendatang, mis. berakhir pada 2017/7/30 00:00:00

Batas waktu yang besar sebagian besar dapat mengurangi beban basis data, sementara data mungkin kedaluwarsa untuk waktu yang lama. Batas waktu yang kecil dapat membuat data tetap up-to-date sebanyak mungkin, sementara database akan memiliki beban yang berat. Jadi Anda harus menyeimbangkan trade-off saat merancang batas waktu .

Bagaimana kunci kedaluwarsa Redis?

Redis memiliki dua cara untuk kedaluwarsa kunci:

  1. Saat klien mencoba mengoperasikan kunci, Redis memeriksa apakah kunci telah mencapai batas waktu. Jika ya, Redis menghapus kuncinya, dan bertindak seolah-olah kunci itu tidak ada. Dengan cara ini, Redis memastikan bahwa klien tidak mendapatkan data kedaluwarsa.
  2. Redis juga memiliki utas kedaluwarsa yang mengambil sampel kunci pada frekuensi yang dikonfigurasi. Jika kunci mencapai batas waktu, Redis menghapus kunci ini. Dengan cara ini, Redis dapat mempercepat proses kedaluwarsa kunci.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Redis/Jedis - Hapus menurut pola?

  2. Basis data NoSQL mana untuk volume data yang sangat tinggi

  3. Pengantar Redis

  4. Pisahkan string dengan karakter di Lua

  5. jackson deserialize objek dengan daftar antarmuka pegas