Class: Hari::Keys::SortedSet

Inherits:
Key
  • Object
show all
Defined in:
lib/hari/keys/sorted_set.rb

Instance Attribute Summary

Attributes inherited from Key

#name, #node

Instance Method Summary collapse

Methods inherited from Key

#delete!, #exists?, #expire, #expire_at, #initialize, #key, #persist, #ttl, #type

Constructor Details

This class inherits a constructor from Hari::Keys::Key

Instance Method Details

#<<(*score_members) ⇒ Object



97
98
99
# File 'lib/hari/keys/sorted_set.rb', line 97

def <<(*score_members)
  add score_members
end

#add(*score_members) ⇒ Object



93
94
95
# File 'lib/hari/keys/sorted_set.rb', line 93

def add(*score_members)
  Hari.redis.zadd key, score_members.to_a.flatten
end

#countObject Also known as: size, length



64
65
66
# File 'lib/hari/keys/sorted_set.rb', line 64

def count
  Hari.redis.zcard key
end

#delete(*members) ⇒ Object



101
102
103
# File 'lib/hari/keys/sorted_set.rb', line 101

def delete(*members)
  Hari.redis.zrem key, members
end

#empty?Boolean

Returns:

  • (Boolean)


71
72
73
# File 'lib/hari/keys/sorted_set.rb', line 71

def empty?
  count == 0
end

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

Returns:

  • (Boolean)


83
84
85
# File 'lib/hari/keys/sorted_set.rb', line 83

def include?(member)
  score(member).present?
end

#many?Boolean

Returns:

  • (Boolean)


79
80
81
# File 'lib/hari/keys/sorted_set.rb', line 79

def many?
  count > 1
end

#one?Boolean

Returns:

  • (Boolean)


75
76
77
# File 'lib/hari/keys/sorted_set.rb', line 75

def one?
  count == 1
end

#range(start = 0, stop = -1,, options = {}) ⇒ Object Also known as: members



15
16
17
18
19
# File 'lib/hari/keys/sorted_set.rb', line 15

def range(start = 0, stop = -1, options = {})
  return revrange(start, stop, options) if options[:desc]

  Hari.redis.zrange key, start, stop, options.slice(:with_scores)
end

#range_by_score(min, max, options = {}) ⇒ Object



38
39
40
41
42
# File 'lib/hari/keys/sorted_set.rb', line 38

def range_by_score(min, max, options = {})
  return revrange_by_score(min, max, options) if options[:desc]

  Hari.redis.zrangebyscore key, min, max, options.slice(:with_scores, :limit)
end

#range_with_scoresObject



23
24
25
# File 'lib/hari/keys/sorted_set.rb', line 23

def range_with_scores
  range 0, -1, with_scores: true
end

#rank(member, options = {}) ⇒ Object Also known as: ranking, position



48
49
50
51
52
# File 'lib/hari/keys/sorted_set.rb', line 48

def rank(member, options = {})
  return revrank(member, options) if options[:desc]

  Hari.redis.zrank key, member
end

#revrange(start = 0, stop = -1,, options = {}) ⇒ Object Also known as: reverse_range, desc_range



27
28
29
# File 'lib/hari/keys/sorted_set.rb', line 27

def revrange(start = 0, stop = -1, options = {})
  Hari.redis.zrevrange key, start, stop, options.slice(:with_scores)
end

#revrange_by_score(min, max, options = {}) ⇒ Object



44
45
46
# File 'lib/hari/keys/sorted_set.rb', line 44

def revrange_by_score(min, max, options = {})
  Hari.redis.zrevrangebyscore key, max, min, options.slice(:with_scores, :limit)
end

#revrange_with_scoresObject



34
35
36
# File 'lib/hari/keys/sorted_set.rb', line 34

def revrange_with_scores
  revrange 0, -1, with_scores: true
end

#revrank(member) ⇒ Object Also known as: reverse_ranking, reverse_position



57
58
59
# File 'lib/hari/keys/sorted_set.rb', line 57

def revrank(member)
  Hari.redis.zrevrank key, member
end

#score(member) ⇒ Object



89
90
91
# File 'lib/hari/keys/sorted_set.rb', line 89

def score(member)
  Hari.redis.zscore key, member
end

#sorted_set(name) ⇒ Object



5
6
7
8
# File 'lib/hari/keys/sorted_set.rb', line 5

def sorted_set(name)
  @name = name
  self
end

#sorted_set!(name) ⇒ Object



10
11
12
13
# File 'lib/hari/keys/sorted_set.rb', line 10

def sorted_set!(name)
  @name = name
  members
end

#trim_by_rank(start, stop) ⇒ Object



105
106
107
# File 'lib/hari/keys/sorted_set.rb', line 105

def trim_by_rank(start, stop)
  Hari.redis.zremrangebyrank key, start, stop
end

#trim_by_score(min, max) ⇒ Object



109
110
111
# File 'lib/hari/keys/sorted_set.rb', line 109

def trim_by_score(min, max)
  Hari.redis.zremrangebyscore key, min, max
end