class RedisRds::Set

Public Instance Methods

<<(item)
Alias for: add
add(item) click to toggle source
# File lib/redis_rds/set.rb, line 5
def add(item)
  return connection.sadd(@redis_key, item)
end
Also aliased as: <<, push
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
push(item)
Alias for: add
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