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

Redis, kedaluwarsa sesi, dan pencarian terbalik

Pada cabang rilis saat ini dari Redis (2.6) , Anda tidak dapat memiliki notifikasi saat item kedaluwarsa. Ini mungkin akan berubah dengan versi berikutnya.

Sementara itu, untuk mendukung kebutuhan Anda, Anda perlu menerapkan dukungan pemberitahuan kedaluwarsa secara manual. Jadi Anda memiliki:

session:<sessionid> -> a hash storing your session data - one of the field is <userid>
user:<userid> -> a set of <sessionid>

Anda harus menghapus sessionid dari set pengguna saat sesi berakhir. Jadi, Anda dapat mempertahankan kumpulan terurut tambahan yang skornya berupa stempel waktu.

Saat Anda membuat sesi 10 untuk pengguna 100:

MULTI
HMSET session:10 userid:100 ... other session data ...
SADD user:100 10
ZADD to_be_expired <current timestamp + session timeout> 10
EXEC

Kemudian, Anda perlu membuat daemon yang akan melakukan polling zset untuk mengidentifikasi sesi yang akan kedaluwarsa (ZRANGEBYSCORE ). Untuk setiap sesi yang kedaluwarsa, ia harus mempertahankan struktur data:

  • keluarkan sesi dari zset (ZREMRANGEBYRANK )
  • mengambil userid sesi (HMGET )
  • hapus sesi (DEL )
  • hapus sesi dari set userid (SREM )

Kesulitan utama adalah memastikan tidak ada kondisi balapan saat daemon melakukan polling dan memproses item. Lihat jawaban saya untuk pertanyaan ini untuk melihat bagaimana penerapannya:

bagaimana menangani sesi kedaluwarsa berdasarkan redis?



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. atur kunci kedaluwarsa pada waktu tertentu saat menggunakan Spring caching dengan Redis

  2. Bagaimana cara menyimpan JSON Bersarang Kompleks di Redis menggunakan Python

  3. Cara Memigrasikan Data Redis™ Menggunakan Redis-Shake

  4. Redis hash kecepatan menulis sangat lambat

  5. .NET Core menyuntikkan layanan singleton di layanan singleton lain