Class: Familia::Set

Inherits:
RedisObject show all
Defined in:
lib/familia/redisobject.rb

Instance Attribute Summary

Attributes inherited from RedisObject

#name, #parent, #redis

Instance Method Summary collapse

Methods inherited from RedisObject

#exists?, #expire, #expireat, #from_redis, inherited, #initialize, #parent?, #rediskey, register, registration, #to_redis, #ttl, #type, #update_expiration

Constructor Details

This class inherits a constructor from Familia::RedisObject

Instance Method Details

#<<(v) ⇒ Object Also known as: add



275
276
277
278
# File 'lib/familia/redisobject.rb', line 275

def << v
  redis.sadd rediskey, to_redis(v)
  self
end

#delete(v) ⇒ Object Also known as: rem, del



293
294
295
# File 'lib/familia/redisobject.rb', line 293

def delete v
  redis.srem rediskey, to_redis(v)
end

#empty?Boolean

Returns:

  • (Boolean)


271
272
273
# File 'lib/familia/redisobject.rb', line 271

def empty?
  size == 0
end

#intersection(*setkeys) ⇒ Object



299
300
301
# File 'lib/familia/redisobject.rb', line 299

def intersection *setkeys
  # TODO
end

#member?(v) ⇒ Boolean Also known as: include?

Returns:

  • (Boolean)


288
289
290
# File 'lib/familia/redisobject.rb', line 288

def member? v
  redis.sismember rediskey, to_redis(v)
end

#membersObject Also known as: all, to_a



281
282
283
284
# File 'lib/familia/redisobject.rb', line 281

def members
  # TODO: handle @opts[:marshal]
  redis.smembers rediskey
end

#move(dstkey, v) ⇒ Object



307
308
309
# File 'lib/familia/redisobject.rb', line 307

def move dstkey, v
  redis.smove rediskey, dstkey, v
end

#popObject



303
304
305
# File 'lib/familia/redisobject.rb', line 303

def pop
  redis.spop rediskey
end

#randomObject



311
312
313
# File 'lib/familia/redisobject.rb', line 311

def random
  redis.srandmember rediskey
end

#selfObject

Make the value stored at KEY identical to the given list define_method :“#RedisObject#name_sync” do |*latest|

latest = latest.flatten.compact
# Do nothing if we're given an empty Array. 
# Otherwise this would clear all current values
if latest.empty?
  false
else
  # Convert to a list of index values if we got the actual objects
  latest = latest.collect { |obj| obj.index } if klass === latest.first
  current = send("#{name_plural}raw")
  added = latest-current
  removed = current-latest
  #Familia.info "#{self.index}: adding: #{added}"
  added.each { |v| self.send("add_#{name_singular}", v) }
  #Familia.info "#{self.index}: removing: #{removed}"
  removed.each { |v| self.send("remove_#{name_singular}", v) }
  true
end

end



336
# File 'lib/familia/redisobject.rb', line 336

Familia::RedisObject.register self, :set

#sizeObject Also known as: length



266
267
268
# File 'lib/familia/redisobject.rb', line 266

def size
  redis.scard rediskey
end