Class: Rudis::ZSet

Inherits:
Structure show all
Defined in:
lib/rudis/structures/zset.rb

Instance Method Summary collapse

Methods inherited from Structure

#del, #exists?, #expire, #expire_at, #redis_type, #rename, #ttl, #type, #watch

Methods inherited from Base

#initialize, #key, #redis

Methods inherited from Rudis

key

Constructor Details

This class inherits a constructor from Rudis::Base

Instance Method Details

#[](val) ⇒ Object Also known as: slice



70
71
72
73
74
75
76
# File 'lib/rudis/structures/zset.rb', line 70

def [](val)
  if val.is_a? Range
    range(val)
  else
    self[val..val]
  end
end

#add(member, score = 1) ⇒ Object Also known as: <<



14
15
16
# File 'lib/rudis/structures/zset.rb', line 14

def add(member, score=1)
  redis.zadd(key, score_type.put(score), type.put(member))
end

#allObject Also known as: to_a



79
80
81
# File 'lib/rudis/structures/zset.rb', line 79

def all
  range(0..-1)
end

#cardObject Also known as: size, length, count



36
37
38
# File 'lib/rudis/structures/zset.rb', line 36

def card
  redis.zcard(key)
end

#default_optionsObject



3
4
5
6
7
8
# File 'lib/rudis/structures/zset.rb', line 3

def default_options
  {
    :type => DefaultType,
    :score_type => IntegerType
  }
end

#empty?Boolean

Returns:

  • (Boolean)


43
44
45
# File 'lib/rudis/structures/zset.rb', line 43

def empty?
  card == 0
end

#firstObject



84
85
86
# File 'lib/rudis/structures/zset.rb', line 84

def first
  self[0..0].first
end

#incr(member) ⇒ Object



27
28
29
# File 'lib/rudis/structures/zset.rb', line 27

def incr(member)
  incrby(member, 1)
end

#incrby(member, i) ⇒ Object



23
24
25
# File 'lib/rudis/structures/zset.rb', line 23

def incrby(member, i)
  redis.zincrby(key, i.to_i, member)
end

#lastObject



88
89
90
# File 'lib/rudis/structures/zset.rb', line 88

def last
  self[-1..-1].first
end

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

Returns:

  • (Boolean)


97
98
99
# File 'lib/rudis/structures/zset.rb', line 97

def member?(val)
  !score(val).nil?
end

#range(ran) ⇒ Object



47
48
49
50
51
# File 'lib/rudis/structures/zset.rb', line 47

def range(ran)
  redis.zrange(key, ran.first.to_i, ran.last.to_i).map do |e|
    type.get(e)
  end
end

#rangebyscore(min, max) ⇒ Object Also known as: range_by_score



60
61
62
63
64
65
66
67
# File 'lib/rudis/structures/zset.rb', line 60

def rangebyscore(min, max)
  redis.zrangebyscore(key,
    score_type.put(min),
    score_type.put(max)
  ).map do |e|
    type.get(e)
  end
end

#rank(member) ⇒ Object



31
32
33
34
# File 'lib/rudis/structures/zset.rb', line 31

def rank(member)
  i = redis.zrank(key, member)
  i && i.to_i
end

#rem(member) ⇒ Object



19
20
21
# File 'lib/rudis/structures/zset.rb', line 19

def rem(member)
  redis.zrem(key, type.put(member))
end

#revrange(ran) ⇒ Object Also known as: rev_range



53
54
55
56
57
# File 'lib/rudis/structures/zset.rb', line 53

def revrange(ran)
  redis.zrevrange(key, ran.first.to_i, ran.last.to_i).map do |e|
    type.get(e)
  end
end

#score(member) ⇒ Object



92
93
94
95
# File 'lib/rudis/structures/zset.rb', line 92

def score(member)
  s = redis.zscore(key, type.put(member))
  s && score_type.get(s)
end

#score_typeObject



10
11
12
# File 'lib/rudis/structures/zset.rb', line 10

def score_type
  @options[:score_type]
end