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
635
636
637
|
# File 'lib/familia/redisobject.rb', line 635
def []= v, score
add score, v
end
|
#add(score, v) ⇒ Object
NOTE: The argument order is the reverse of #[]=
640
641
642
643
644
|
# File 'lib/familia/redisobject.rb', line 640
def add score, v
ret = redis.zadd rediskey, score, to_redis(v)
update_expiration
ret
end
|
#at(idx) ⇒ Object
791
792
793
|
# File 'lib/familia/redisobject.rb', line 791
def at idx
range(idx, idx).first
end
|
#collect(&blk) ⇒ Object
701
702
703
|
# File 'lib/familia/redisobject.rb', line 701
def collect &blk
members.collect &blk
end
|
#collectraw(&blk) ⇒ Object
717
718
719
|
# File 'lib/familia/redisobject.rb', line 717
def collectraw &blk
membersraw.collect &blk
end
|
#decrement(v, by = 1) ⇒ Object
Also known as:
decr, decrby
778
779
780
|
# File 'lib/familia/redisobject.rb', line 778
def decrement v, by=1
increment v, -by
end
|
#delete(v) ⇒ Object
Also known as:
remove, rem, del
784
785
786
|
# File 'lib/familia/redisobject.rb', line 784
def delete v
redis.zrem rediskey, to_redis(v)
end
|
#each(&blk) ⇒ Object
693
694
695
|
# File 'lib/familia/redisobject.rb', line 693
def each &blk
members.each &blk
end
|
#each_with_index(&blk) ⇒ Object
697
698
699
|
# File 'lib/familia/redisobject.rb', line 697
def each_with_index &blk
members.each_with_index &blk
end
|
#eachraw(&blk) ⇒ Object
709
710
711
|
# File 'lib/familia/redisobject.rb', line 709
def eachraw &blk
membersraw.each &blk
end
|
#eachraw_with_index(&blk) ⇒ Object
713
714
715
|
# File 'lib/familia/redisobject.rb', line 713
def eachraw_with_index &blk
membersraw.each_with_index &blk
end
|
#empty? ⇒ Boolean
629
630
631
|
# File 'lib/familia/redisobject.rb', line 629
def empty?
size == 0
end
|
#first ⇒ Object
Return the first element in the list. Redis: ZRANGE(0)
796
797
798
|
# File 'lib/familia/redisobject.rb', line 796
def first
at(0)
end
|
#increment(v, by = 1) ⇒ Object
Also known as:
incr, incrby
772
773
774
|
# File 'lib/familia/redisobject.rb', line 772
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)
801
802
803
|
# File 'lib/familia/redisobject.rb', line 801
def last
at(-1)
end
|
#member?(v) ⇒ Boolean
Also known as:
include?
652
653
654
|
# File 'lib/familia/redisobject.rb', line 652
def member? v
!rank(v).nil?
end
|
#members(count = -1,, opts = {}) ⇒ Object
Also known as:
to_a, all
669
670
671
672
673
|
# File 'lib/familia/redisobject.rb', line 669
def members count=-1, opts={}
count -= 1 if count > 0
el = membersraw count, opts
multi_from_redis *el
end
|
#membersraw(count = -1,, opts = {}) ⇒ Object
677
678
679
680
|
# File 'lib/familia/redisobject.rb', line 677
def membersraw count=-1, opts={}
count -= 1 if count > 0
rangeraw 0, count, opts
end
|
#range(sidx, eidx, opts = {}) ⇒ Object
725
726
727
728
729
|
# File 'lib/familia/redisobject.rb', line 725
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]
753
754
755
756
757
|
# File 'lib/familia/redisobject.rb', line 753
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
759
760
761
762
|
# File 'lib/familia/redisobject.rb', line 759
def rangebyscoreraw sscore, escore, opts={}
echo :rangebyscoreraw, caller[0] if Familia.debug
redis.zrangebyscore(rediskey, sscore, escore, **opts)
end
|
#rangeraw(sidx, eidx, opts = {}) ⇒ Object
731
732
733
734
735
736
737
738
739
740
|
# File 'lib/familia/redisobject.rb', line 731
def rangeraw sidx, eidx, opts={}
redis.zrange(rediskey, sidx, eidx, **opts)
end
|
#rank(v) ⇒ Object
rank of member v
when ordered lowest to highest (starts at 0)
658
659
660
661
|
# File 'lib/familia/redisobject.rb', line 658
def rank v
ret = redis.zrank rediskey, to_redis(v)
ret.nil? ? nil : ret.to_i
end
|
#remrangebyrank(srank, erank) ⇒ Object
764
765
766
|
# File 'lib/familia/redisobject.rb', line 764
def remrangebyrank srank, erank
redis.zremrangebyrank rediskey, srank, erank
end
|
#remrangebyscore(sscore, escore) ⇒ Object
768
769
770
|
# File 'lib/familia/redisobject.rb', line 768
def remrangebyscore sscore, escore
redis.zremrangebyscore rediskey, sscore, escore
end
|
#revmembers(count = -1,, opts = {}) ⇒ Object
682
683
684
685
686
|
# File 'lib/familia/redisobject.rb', line 682
def revmembers count=-1, opts={}
count -= 1 if count > 0
el = revmembersraw count, opts
multi_from_redis *el
end
|
#revmembersraw(count = -1,, opts = {}) ⇒ Object
688
689
690
691
|
# File 'lib/familia/redisobject.rb', line 688
def revmembersraw count=-1, opts={}
count -= 1 if count > 0
revrangeraw 0, count, opts
end
|
#revrange(sidx, eidx, opts = {}) ⇒ Object
742
743
744
745
746
|
# File 'lib/familia/redisobject.rb', line 742
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
748
749
750
|
# File 'lib/familia/redisobject.rb', line 748
def revrangeraw sidx, eidx, opts={}
redis.zrevrange(rediskey, sidx, eidx, **opts)
end
|
#revrank(v) ⇒ Object
rank of member v
when ordered highest to lowest (starts at 0)
664
665
666
667
|
# File 'lib/familia/redisobject.rb', line 664
def revrank v
ret = redis.zrevrank rediskey, to_redis(v)
ret.nil? ? nil : ret.to_i
end
|
#score(v) ⇒ Object
Also known as:
[]
646
647
648
649
|
# File 'lib/familia/redisobject.rb', line 646
def score v
ret = redis.zscore rediskey, to_redis(v)
ret.nil? ? nil : ret.to_f
end
|
#select(&blk) ⇒ Object
705
706
707
|
# File 'lib/familia/redisobject.rb', line 705
def select &blk
members.select &blk
end
|
#selectraw(&blk) ⇒ Object
721
722
723
|
# File 'lib/familia/redisobject.rb', line 721
def selectraw &blk
membersraw.select &blk
end
|
#size ⇒ Object
Also known as:
length
624
625
626
|
# File 'lib/familia/redisobject.rb', line 624
def size
redis.zcard rediskey
end
|