class Familia::SortedSet

Public Instance Methods

[](v)
Alias for: score
[]=(v, score) click to toggle source

NOTE: The argument order is the reverse of add e.g. obj.metrics = SCORE

# File lib/familia/redisobject.rb, line 633
def []= v, score
  add score, v
end
add(score, v) click to toggle source

NOTE: The argument order is the reverse of []=

# File lib/familia/redisobject.rb, line 638
def add score, v
  ret = redis.zadd rediskey, score, to_redis(v)
  update_expiration
  ret
end
all(count=-1, opts={})
Alias for: members
at(idx) click to toggle source
# File lib/familia/redisobject.rb, line 785
def at idx
  range(idx, idx).first
end
collect(&blk) click to toggle source
# File lib/familia/redisobject.rb, line 699
def collect &blk
  members.collect &blk
end
collectraw(&blk) click to toggle source
# File lib/familia/redisobject.rb, line 715
def collectraw &blk
  membersraw.collect &blk
end
decr(v, by=1)
Alias for: decrement
decrby(v, by=1)
Alias for: decrement
decrement(v, by=1) click to toggle source
# File lib/familia/redisobject.rb, line 772
def decrement v, by=1
  increment v, -by
end
Also aliased as: decr, decrby
del(v)
Alias for: delete
delete(v) click to toggle source
# File lib/familia/redisobject.rb, line 778
def delete v
  redis.zrem rediskey, to_redis(v)
end
Also aliased as: remove, rem, del
each(&blk) click to toggle source
# File lib/familia/redisobject.rb, line 691
def each &blk
  members.each &blk
end
each_with_index(&blk) click to toggle source
# File lib/familia/redisobject.rb, line 695
def each_with_index &blk
  members.each_with_index &blk
end
eachraw(&blk) click to toggle source
# File lib/familia/redisobject.rb, line 707
def eachraw &blk
  membersraw.each &blk
end
eachraw_with_index(&blk) click to toggle source
# File lib/familia/redisobject.rb, line 711
def eachraw_with_index &blk
  membersraw.each_with_index &blk
end
empty?() click to toggle source
# File lib/familia/redisobject.rb, line 627
def empty?
  size == 0
end
first() click to toggle source

Return the first element in the list. Redis: ZRANGE(0)

# File lib/familia/redisobject.rb, line 790
def first
  at(0)
end
include?(v)
Alias for: member?
incr(v, by=1)
Alias for: increment
incrby(v, by=1)
Alias for: increment
increment(v, by=1) click to toggle source
# File lib/familia/redisobject.rb, line 766
def increment v, by=1
  redis.zincrby(rediskey, by, v).to_i
end
Also aliased as: incr, incrby
last() click to toggle source

Return the last element in the list. Redis: ZRANGE(-1)

# File lib/familia/redisobject.rb, line 795
def last
  at(-1)
end
length()
Alias for: size
member?(v) click to toggle source
# File lib/familia/redisobject.rb, line 650
def member? v
  !rank(v).nil?
end
Also aliased as: include?
members(count=-1, opts={}) click to toggle source
# File lib/familia/redisobject.rb, line 667
def members count=-1, opts={}
  count -= 1 if count > 0
  el = membersraw count, opts
  multi_from_redis *el
end
Also aliased as: to_a, all
membersraw(count=-1, opts={}) click to toggle source
# File lib/familia/redisobject.rb, line 675
def membersraw count=-1, opts={}
  count -= 1 if count > 0
  rangeraw 0, count, opts
end
range(sidx, eidx, opts={}) click to toggle source
# File lib/familia/redisobject.rb, line 723
def range sidx, eidx, opts={}
  echo :range, caller[0] if Familia.debug
  el = rangeraw(sidx, eidx, opts)
  multi_from_redis *el
end
rangebyscore(sscore, escore, opts={}) click to toggle source

e.g. obj.metrics.rangebyscore (now-12.hours), now, :limit => [0, 10]

# File lib/familia/redisobject.rb, line 746
def rangebyscore sscore, escore, opts={}
  echo :rangebyscore, caller[0] if Familia.debug
  el = rangebyscoreraw(sscore, escore, opts)
  multi_from_redis *el
end
rangebyscoreraw(sscore, escore, opts={}) click to toggle source
# File lib/familia/redisobject.rb, line 752
def rangebyscoreraw sscore, escore, opts={}
  echo :rangebyscoreraw, caller[0] if Familia.debug
  opts[:with_scores] = true if opts[:withscores]
  redis.zrangebyscore(rediskey, sscore, escore, opts)
end
rangeraw(sidx, eidx, opts={}) click to toggle source
# File lib/familia/redisobject.rb, line 729
def rangeraw sidx, eidx, opts={}
  opts[:with_scores] = true if opts[:withscores]
  redis.zrange(rediskey, sidx, eidx, opts)
end
rank(v) click to toggle source

rank of member v when ordered lowest to highest (starts at 0)

# File lib/familia/redisobject.rb, line 656
def rank v
  ret = redis.zrank rediskey, to_redis(v)
  ret.nil? ? nil : ret.to_i
end
rem(v)
Alias for: delete
remove(v)
Alias for: delete
remrangebyrank(srank, erank) click to toggle source
# File lib/familia/redisobject.rb, line 758
def remrangebyrank srank, erank
  redis.zremrangebyrank rediskey, srank, erank
end
remrangebyscore(sscore, escore) click to toggle source
# File lib/familia/redisobject.rb, line 762
def remrangebyscore sscore, escore
  redis.zremrangebyscore rediskey, sscore, escore
end
revmembers(count=-1, opts={}) click to toggle source
# File lib/familia/redisobject.rb, line 680
def revmembers count=-1, opts={}
  count -= 1 if count > 0
  el = revmembersraw count, opts
  multi_from_redis *el
end
revmembersraw(count=-1, opts={}) click to toggle source
# File lib/familia/redisobject.rb, line 686
def revmembersraw count=-1, opts={}
  count -= 1 if count > 0
  revrangeraw 0, count, opts
end
revrange(sidx, eidx, opts={}) click to toggle source
# File lib/familia/redisobject.rb, line 734
def revrange sidx, eidx, opts={}
  echo :revrange, caller[0] if Familia.debug
  el = revrangeraw(sidx, eidx, opts)
  multi_from_redis *el
end
revrangeraw(sidx, eidx, opts={}) click to toggle source
# File lib/familia/redisobject.rb, line 740
def revrangeraw sidx, eidx, opts={}
  opts[:with_scores] = true if opts[:withscores]
  redis.zrevrange(rediskey, sidx, eidx, opts)
end
revrank(v) click to toggle source

rank of member v when ordered highest to lowest (starts at 0)

# File lib/familia/redisobject.rb, line 662
def revrank v
  ret = redis.zrevrank rediskey, to_redis(v)
  ret.nil? ? nil : ret.to_i
end
score(v) click to toggle source
# File lib/familia/redisobject.rb, line 644
def score v
  ret = redis.zscore rediskey, to_redis(v)
  ret.nil? ? nil : ret.to_f
end
Also aliased as: []
select(&blk) click to toggle source
# File lib/familia/redisobject.rb, line 703
def select &blk
  members.select &blk
end
selectraw(&blk) click to toggle source
# File lib/familia/redisobject.rb, line 719
def selectraw &blk
  membersraw.select &blk
end
size() click to toggle source
# File lib/familia/redisobject.rb, line 622
def size
  redis.zcard rediskey
end
Also aliased as: length
to_a(count=-1, opts={})
Alias for: members