MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Cara menghapus sesi lama/basi saat menggunakan penyimpanan sesi Mongo DB di Ruby on Rails 3.2

Kunci untuk menyelesaikan ini adalah memahami bahwa menggunakan Mongoid langsung metode ketika session_store aplikasi Rails 3 Anda diatur ke mongoid_store tidak akan pernah membiarkan interaksi database langsung seperti ini terjadi.

Jadi sebagai gantinya, dengan menggunakan Mongoid hanya untuk koneksi basis data dasar tetapi kemudian benar-benar berinteraksi dengan Moped inti dari Mongoid langsung pada tingkat operasi driver, fungsi yang sama dapat dicapai dengan mudah! Ini rake Mongoid/Moped tugas yang saya buat yang bekerja dengan cukup baik:

namespace :sessions do
  stale_window = 7
  desc "Clear stale DB sessions older than #{ stale_window } days."
  task :cleanup => :environment do
    db = Mongoid::Sessions.default
    begin
      db[:sessions].where('updated_at' => { '$lt' => stale_window.days.ago }).sort(updated_at: 1).no_timeout.remove_all
    rescue Moped::Errors::SocketError => e
      # Rescue here if needed. If not, the screwed up process dies silently.
    end
  end
end

Koneksi diatur melalui db = Mongoid::Sessions.default dan keajaiban terjadi di garis:

db[:sessions].where('updated_at' => { '$lt' => stale_window.days.ago }).sort(updated_at: 1).no_timeout.remove_all

Saya telah menetapkan stale_window variabel sehingga saya dapat dengan mudah menyesuaikan rentang tugas ini; menetapkan nilai DB serta deskripsi. Untuk menggunakannya saya menjalankannya seperti ini dari jalur basis kode:

RAILS_ENV=production bundle exec rake sessions:cleanup

Dan tentu saja cukup ubah RAILS_ENV nilai agar sesuai dengan lingkungan yang Anda inginkan untuk ditindaklanjuti oleh tugas ini; seperti staging , development atau apa pun yang mungkin Anda beri nama lingkungan Anda. Setelah menjalankan rake tugas, sessions tabel koleksi dipangkas menjadi sesuatu yang lebih realistis dengan penggunaan dunia nyata dan ukuran database keseluruhan lebih masuk akal untuk ditangani.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Kesalahan koneksi luwak saat menghubungkan ke mLab

  2. Bagaimana cara membaca data ke Tensorflow?

  3. Pymongo mendapatkan id yang dimasukkan bahkan dengan kesalahan kunci duplikat

  4. Mulai MongoDB dari dalam tugas Grunt

  5. Indeks Senyawa Mongoose Unik + Jarang