Class: Familia::SortedSet
Instance Attribute Summary
Attributes inherited from RedisObject
#cache, #name, #parent, #redis
Instance Method Summary
collapse
-
#[]=(v, score) ⇒ Object
NOTE: The argument order is the reverse of #add e.g.
-
#add(score, v) ⇒ Object
NOTE: The argument order is the reverse of #[]=.
-
#at(idx) ⇒ Object
-
#collect(&blk) ⇒ Object
-
#collectraw(&blk) ⇒ Object
-
#decrement(v, by = 1) ⇒ Object
(also: #decr, #decrby)
-
#delete(v) ⇒ Object
(also: #remove, #rem, #del)
-
#each(&blk) ⇒ Object
-
#each_with_index(&blk) ⇒ Object
-
#eachraw(&blk) ⇒ Object
-
#eachraw_with_index(&blk) ⇒ Object
-
#empty? ⇒ Boolean
-
#first ⇒ Object
Return the first element in the list.
-
#increment(v, by = 1) ⇒ Object
(also: #incr, #incrby)
-
#last ⇒ Object
Return the last element in the list.
-
#member?(v) ⇒ Boolean
(also: #include?)
-
#members(count = -1,, opts = {}) ⇒ Object
(also: #to_a, #all)
-
#membersraw(count = -1,, opts = {}) ⇒ Object
-
#range(sidx, eidx, opts = {}) ⇒ Object
-
#rangebyscore(sscore, escore, opts = {}) ⇒ Object
-
#rangebyscoreraw(sscore, escore, opts = {}) ⇒ Object
-
#rangeraw(sidx, eidx, opts = {}) ⇒ Object
-
#rank(v) ⇒ Object
rank of member v
when ordered lowest to highest (starts at 0).
-
#remrangebyrank(srank, erank) ⇒ Object
-
#remrangebyscore(sscore, escore) ⇒ Object
-
#revmembers(count = -1,, opts = {}) ⇒ Object
-
#revmembersraw(count = -1,, opts = {}) ⇒ Object
-
#revrange(sidx, eidx, opts = {}) ⇒ Object
-
#revrangeraw(sidx, eidx, opts = {}) ⇒ Object
-
#revrank(v) ⇒ Object
rank of member v
when ordered highest to lowest (starts at 0).
-
#score(v) ⇒ Object
(also: #[])
-
#select(&blk) ⇒ Object
-
#selectraw(&blk) ⇒ Object
-
#size ⇒ Object
(also: #length)
Methods inherited from RedisObject
#class?, #clear_cache, #db, #dump_method, #echo, #exists?, #expire, #expireat, #from_redis, inherited, #initialize, #load_method, #move, #multi_from_redis, #parent?, #persist, #qstamp, #realttl, #rediskey, register, registration, #rename, #renamenx, #to_redis, #ttl, #type, #update_expiration
Instance Method Details
#[]=(v, score) ⇒ Object
NOTE: The argument order is the reverse of #add e.g. obj.metrics = SCORE
633
634
635
|
# File 'lib/familia/redisobject.rb', line 633
def []= v, score
add score, v
end
|
#add(score, v) ⇒ Object
NOTE: The argument order is the reverse of #[]=
638
639
640
641
642
|
# File 'lib/familia/redisobject.rb', line 638
def add score, v
ret = redis.zadd rediskey, score, to_redis(v)
update_expiration
ret
end
|
#at(idx) ⇒ Object
785
786
787
|
# File 'lib/familia/redisobject.rb', line 785
def at idx
range(idx, idx).first
end
|
#collect(&blk) ⇒ Object
699
700
701
|
# File 'lib/familia/redisobject.rb', line 699
def collect &blk
members.collect &blk
end
|
#collectraw(&blk) ⇒ Object
715
716
717
|
# File 'lib/familia/redisobject.rb', line 715
def collectraw &blk
membersraw.collect &blk
end
|
#decrement(v, by = 1) ⇒ Object
Also known as:
decr, decrby
772
773
774
|
# File 'lib/familia/redisobject.rb', line 772
def decrement v, by=1
increment v, -by
end
|
#delete(v) ⇒ Object
Also known as:
remove, rem, del
778
779
780
|
# File 'lib/familia/redisobject.rb', line 778
def delete v
redis.zrem rediskey, to_redis(v)
end
|
#each(&blk) ⇒ Object
691
692
693
|
# File 'lib/familia/redisobject.rb', line 691
def each &blk
members.each &blk
end
|
#each_with_index(&blk) ⇒ Object
695
696
697
|
# File 'lib/familia/redisobject.rb', line 695
def each_with_index &blk
members.each_with_index &blk
end
|
#eachraw(&blk) ⇒ Object
707
708
709
|
# File 'lib/familia/redisobject.rb', line 707
def eachraw &blk
membersraw.each &blk
end
|
#eachraw_with_index(&blk) ⇒ Object
711
712
713
|
# File 'lib/familia/redisobject.rb', line 711
def eachraw_with_index &blk
membersraw.each_with_index &blk
end
|
#empty? ⇒ Boolean
627
628
629
|
# File 'lib/familia/redisobject.rb', line 627
def empty?
size == 0
end
|
#first ⇒ Object
Return the first element in the list. Redis: ZRANGE(0)
790
791
792
|
# File 'lib/familia/redisobject.rb', line 790
def first
at(0)
end
|
#increment(v, by = 1) ⇒ Object
Also known as:
incr, incrby
766
767
768
|
# File 'lib/familia/redisobject.rb', line 766
def increment v, by=1
redis.zincrby(rediskey, by, v).to_i
end
|
#last ⇒ Object
Return the last element in the list. Redis: ZRANGE(-1)
795
796
797
|
# File 'lib/familia/redisobject.rb', line 795
def last
at(-1)
end
|
#member?(v) ⇒ Boolean
Also known as:
include?
650
651
652
|
# File 'lib/familia/redisobject.rb', line 650
def member? v
!rank(v).nil?
end
|
#members(count = -1,, opts = {}) ⇒ Object
Also known as:
to_a, all
667
668
669
670
671
|
# 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
|
#membersraw(count = -1,, opts = {}) ⇒ Object
675
676
677
678
|
# 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 = {}) ⇒ Object
723
724
725
726
727
|
# 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 = {}) ⇒ Object
e.g. obj.metrics.rangebyscore (now-12.hours), now, :limit => [0, 10]
746
747
748
749
750
|
# 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 = {}) ⇒ Object
752
753
754
755
756
|
# 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 = {}) ⇒ Object
729
730
731
732
|
# 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) ⇒ Object
rank of member v
when ordered lowest to highest (starts at 0)
656
657
658
659
|
# File 'lib/familia/redisobject.rb', line 656
def rank v
ret = redis.zrank rediskey, to_redis(v)
ret.nil? ? nil : ret.to_i
end
|
#remrangebyrank(srank, erank) ⇒ Object
758
759
760
|
# File 'lib/familia/redisobject.rb', line 758
def remrangebyrank srank, erank
redis.zremrangebyrank rediskey, srank, erank
end
|
#remrangebyscore(sscore, escore) ⇒ Object
762
763
764
|
# File 'lib/familia/redisobject.rb', line 762
def remrangebyscore sscore, escore
redis.zremrangebyscore rediskey, sscore, escore
end
|
#revmembers(count = -1,, opts = {}) ⇒ Object
680
681
682
683
684
|
# 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 = {}) ⇒ Object
686
687
688
689
|
# 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 = {}) ⇒ Object
734
735
736
737
738
|
# 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 = {}) ⇒ Object
740
741
742
743
|
# 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) ⇒ Object
rank of member v
when ordered highest to lowest (starts at 0)
662
663
664
665
|
# 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) ⇒ Object
Also known as:
[]
644
645
646
647
|
# File 'lib/familia/redisobject.rb', line 644
def score v
ret = redis.zscore rediskey, to_redis(v)
ret.nil? ? nil : ret.to_f
end
|
#select(&blk) ⇒ Object
703
704
705
|
# File 'lib/familia/redisobject.rb', line 703
def select &blk
members.select &blk
end
|
#selectraw(&blk) ⇒ Object
719
720
721
|
# File 'lib/familia/redisobject.rb', line 719
def selectraw &blk
membersraw.select &blk
end
|
#size ⇒ Object
Also known as:
length
622
623
624
|
# File 'lib/familia/redisobject.rb', line 622
def size
redis.zcard rediskey
end
|