class RedisRds::Set
Public Instance Methods
add(item)
click to toggle source
# File lib/redis_rds/set.rb, line 5 def add(item) return connection.sadd(@redis_key, item) end
all()
click to toggle source
# File lib/redis_rds/set.rb, line 28 def all return ::Set.new(connection.smembers(@redis_key)).to_a end
consume()
click to toggle source
# File lib/redis_rds/set.rb, line 32 def consume lua_script = " local result = redis.call('smembers', KEYS[1]); redis.call('del', KEYS[1]); return result;" result = connection.eval(lua_script, [@redis_key]) result = [] if result.blank? return ::Set.new(Array.wrap(result).compact).to_a end
each(&block)
click to toggle source
TODO: Implement lazy enumerator
# File lib/redis_rds/set.rb, line 56 def each(&block) return all.each(&block) end
include?(object)
click to toggle source
# File lib/redis_rds/set.rb, line 47 def include?(object) return connection.sismember(@redis_key, object) end
merge(enumerable)
click to toggle source
# File lib/redis_rds/set.rb, line 11 def merge(enumerable) lua_script = " local result = 0; for i, item in ipairs(ARGV) do result = result + redis.call('sadd', KEYS[1], item); end return result;" result = connection.eval(lua_script, [@redis_key], enumerable.entries) result = [] if result.blank? return result end
remove(item)
click to toggle source
# File lib/redis_rds/set.rb, line 24 def remove(item) return connection.srem(@redis_key, item) end
size()
click to toggle source
# File lib/redis_rds/set.rb, line 43 def size return connection.scard(@redis_key) end
to_json()
click to toggle source
# File lib/redis_rds/set.rb, line 51 def to_json return all.to_json end