Skip to content

Instantly share code, notes, and snippets.

@DazWorrall
Created March 1, 2019 09:39
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save DazWorrall/1c1d3d1ddfb0dc41b769f0024c1dd77c to your computer and use it in GitHub Desktop.
Save DazWorrall/1c1d3d1ddfb0dc41b769f0024c1dd77c to your computer and use it in GitHub Desktop.
Redis sorted sets with timestamps for scores
require 'redis'
require 'active_support/time'
redis = Redis.new
# members are added with a score that is a timestamp of when they should expire
redis.zadd('test-sset', 10.minutes.from_now.to_i, 'app1')
# let's add one in the past so we can test some more
redis.zadd('test-sset', 10.minutes.ago.to_i, 'app2')
puts 'all apps'
puts redis.zrange('test-sset', 0, -1) # app1, app2
puts 'active apps'
puts redis.zrangebyscore('test-sset', Time.now.utc.to_i, '+inf') #app1
puts 'expiring old apps'
puts redis.zremrangebyscore('test-sset', '-inf', Time.now.utc.to_i) # returns # of expired elements
puts 'all remaining apps'
puts redis.zrange('test-sset', 0, -1) # app1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment