Class: Collectr::RedisArray

Inherits:
RedisBase show all
Defined in:
lib/collectr/redis/redis_array.rb

Instance Method Summary collapse

Methods inherited from RedisBase

#deserialize, #serialize

Constructor Details

#initialize(name, options = {}) ⇒ RedisArray

Returns a new instance of RedisArray.



7
8
9
10
11
# File 'lib/collectr/redis/redis_array.rb', line 7

def initialize(name, options={})
  @title = name
  @max_size = options[:max_size] if options.has_key?(:max_size)
  @datastore = options[:datastore] if options.has_key?(:datastore)
end

Instance Method Details

#<<(obj) ⇒ Object



17
18
19
# File 'lib/collectr/redis/redis_array.rb', line 17

def <<(obj)
  add obj
end

#[](n) ⇒ Object



29
30
31
# File 'lib/collectr/redis/redis_array.rb', line 29

def [](n)
  deserialize(datastore.lindex @title, n)
end

#add(obj) ⇒ Object



21
22
23
24
25
26
27
# File 'lib/collectr/redis/redis_array.rb', line 21

def add(obj)
  datastore.rpush @title, serialize(obj)
  len = size
  if @max_size and len>@max_size
    datastore.ltrim @title, len-@max_size, -1
  end
end

#clearObject



49
50
51
52
# File 'lib/collectr/redis/redis_array.rb', line 49

def clear
  datastore.ltrim @title, 0, 0
  datastore.lpop @title
end

#datastoreObject



13
14
15
# File 'lib/collectr/redis/redis_array.rb', line 13

def datastore
  @datastore ||= Redis.current
end

#delete(obj) ⇒ Object



37
38
39
# File 'lib/collectr/redis/redis_array.rb', line 37

def delete(obj)
  datastore.lrem @title, 0, serialize(obj)
end

#popObject



33
34
35
# File 'lib/collectr/redis/redis_array.rb', line 33

def pop
  deserialize(datastore.lpop @title)
end

#sizeObject



41
42
43
# File 'lib/collectr/redis/redis_array.rb', line 41

def size
  datastore.llen @title
end

#to_aObject



45
46
47
# File 'lib/collectr/redis/redis_array.rb', line 45

def to_a
  datastore.lrange(@title, 0, -1).collect{ |i| deserialize(i) }
end