Sha256: dd9478b6bc11a24f3a0ca87207893ec1c24fb3b4ec3f7ff9625b37351e2cf5f0
Contents?: true
Size: 1.46 KB
Versions: 9
Compression:
Stored size: 1.46 KB
Contents
module Rack class MiniProfiler class RedisStore < AbstractStore EXPIRES_IN_SECONDS = 60 * 60 * 24 def initialize(args = nil) @args = args || {} @prefix = @args.delete(:prefix) || 'MPRedisStore' @redis_connection = @args.delete(:connection) @expires_in_seconds = @args.delete(:expires_in) || EXPIRES_IN_SECONDS end def save(page_struct) redis.setex "#{@prefix}#{page_struct[:id]}", @expires_in_seconds, Marshal::dump(page_struct) end def load(id) key = "#{@prefix}#{id}" raw = redis.get key begin Marshal::load(raw) if raw rescue # bad format, junk old data redis.del key nil end end def set_unviewed(user, id) key = "#{@prefix}-#{user}-v" redis.sadd key, id redis.expire key, @expires_in_seconds end def set_viewed(user, id) redis.srem "#{@prefix}-#{user}-v", id end def get_unviewed_ids(user) redis.smembers "#{@prefix}-#{user}-v" end def diagnostics(user) "Redis prefix: #{@prefix} Redis location: #{redis.client.host}:#{redis.client.port} db: #{redis.client.db} unviewed_ids: #{get_unviewed_ids(user)} " end private def redis @redis_connection ||= begin require 'redis' unless defined? Redis Redis.new(@args) end end end end end
Version data entries
9 entries across 9 versions & 1 rubygems