sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur man rensar gamla/inaktuella sessioner när man använder Mongo DB sessionslagring i Ruby on Rails 3.2

Nyckeln till att lösa detta är att förstå att direkt Mongoid metoder när din Rails 3-applikations session_store är inställd på mongoid_store skulle aldrig tillåta den här typen av direkt databasinteraktion.

Så istället, genom att använda Mongoid bara för den grundläggande databasanslutningen men sedan faktiskt interagera med mopeden kärnan i Mongoid direkt på förardriftsnivå, samma funktionalitet kan uppnås med lätthet! Här är Mongoid/Moped rake uppgift jag kom på som fungerar ganska bra:

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

Anslutningen ställs in via db = Mongoid::Sessions.default och magin händer i raden:

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

Jag har ställt in ett stale_window variabel så att jag enkelt kan justera intervallet för denna uppgift; anger DB-värdet samt beskrivningen. För att använda det kör jag det så här från kodbassökvägen:

RAILS_ENV=production bundle exec rake sessions:cleanup

Och naturligtvis ändra bara RAILS_ENV värde för att matcha miljön du vill att denna uppgift ska agera på; såsom staging , development eller vad du nu kan kalla din miljö. Efter att ha kört den rake uppgift, sessions samlingstabellen beskärs till något mer realistiskt med verklig användning och den övergripande databasstorleken är mer rimlig att hantera.




  1. När upphör ett mongodb-dokument efter att det har uppdaterats?

  2. Redis :Hur kan jag sortera min hash efter nycklar?

  3. MongoDB:försämrad frågeprestanda

  4. MongoDB - Skriv ut