Skip to content

Commit

Permalink
Use setex to set expiry with one call
Browse files Browse the repository at this point in the history
  • Loading branch information
dplummer committed Feb 24, 2012
1 parent a28bc40 commit b6eb8ce
Showing 1 changed file with 8 additions and 6 deletions.
14 changes: 8 additions & 6 deletions lib/redis-session-store.rb
Expand Up @@ -35,7 +35,7 @@ def initialize(app, options = {})
def prefixed(sid)
"#{@default_options[:key_prefix]}#{sid}"
end

def get_session(env, sid)
sid ||= generate_sid
begin
Expand All @@ -50,15 +50,17 @@ def get_session(env, sid)
def set_session(env, sid, session_data)
options = env['rack.session.options']
expiry = options[:expire_after] || nil

@redis.pipelined do
@redis.set(prefixed(sid), Marshal.dump(session_data))
@redis.expire(prefixed(sid), expiry) if expiry
if expiry
@redis.setex(prefixed(sid), expiry, Marshal.dump(session_data))
else
@redis.set(prefixed(sid), Marshal.dump(session_data))
end
end

return true
rescue Errno::ECONNREFUSED
return false
end

end

0 comments on commit b6eb8ce

Please sign in to comment.