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.



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

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



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

def <<(obj)
  add obj
end

#[](n) ⇒ Object



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

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

#add(obj) ⇒ Object



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

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



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

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

#datastoreObject



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

def datastore
  @datastore ||= Redis.current
end

#delete(obj) ⇒ Object



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

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

#popObject



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

def pop
  deserialize(datastore.lpop @title)
end

#sizeObject



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

def size
  datastore.llen @title
end

#to_aObject



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

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