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, #parent?, #realttl, #rediskey, register, registration, #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
560
561
562
|
# File 'lib/familia/redisobject.rb', line 560
def []= v, score
add score, v
end
|
#add(score, v) ⇒ Object
NOTE: The argument order is the reverse of #[]=
565
566
567
|
# File 'lib/familia/redisobject.rb', line 565
def add score, v
redis.zadd rediskey, score, to_redis(v)
end
|
#at(idx) ⇒ Object
705
706
707
|
# File 'lib/familia/redisobject.rb', line 705
def at idx
range(idx, idx).first
end
|
#collect(&blk) ⇒ Object
622
623
624
|
# File 'lib/familia/redisobject.rb', line 622
def collect &blk
members.collect &blk
end
|
#collectraw(&blk) ⇒ Object
638
639
640
|
# File 'lib/familia/redisobject.rb', line 638
def collectraw &blk
membersraw.collect &blk
end
|
#decrement(v, by = 1) ⇒ Object
Also known as:
decr, decrby
692
693
694
|
# File 'lib/familia/redisobject.rb', line 692
def decrement v, by=1
increment v, -by
end
|
#delete(v) ⇒ Object
Also known as:
remove, rem, del
698
699
700
|
# File 'lib/familia/redisobject.rb', line 698
def delete v
redis.zrem rediskey, to_redis(v)
end
|
#each(&blk) ⇒ Object
614
615
616
|
# File 'lib/familia/redisobject.rb', line 614
def each &blk
members.each &blk
end
|
#each_with_index(&blk) ⇒ Object
618
619
620
|
# File 'lib/familia/redisobject.rb', line 618
def each_with_index &blk
members.each_with_index &blk
end
|
#eachraw(&blk) ⇒ Object
630
631
632
|
# File 'lib/familia/redisobject.rb', line 630
def eachraw &blk
membersraw.each &blk
end
|
#eachraw_with_index(&blk) ⇒ Object
634
635
636
|
# File 'lib/familia/redisobject.rb', line 634
def eachraw_with_index &blk
membersraw.each_with_index &blk
end
|
#empty? ⇒ Boolean
554
555
556
|
# File 'lib/familia/redisobject.rb', line 554
def empty?
size == 0
end
|
#first ⇒ Object
Return the first element in the list. Redis: ZRANGE(0)
710
711
712
|
# File 'lib/familia/redisobject.rb', line 710
def first
at(0)
end
|
#increment(v, by = 1) ⇒ Object
Also known as:
incr, incrby
686
687
688
|
# File 'lib/familia/redisobject.rb', line 686
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)
715
716
717
|
# File 'lib/familia/redisobject.rb', line 715
def last
at(-1)
end
|
#member?(v) ⇒ Boolean
Also known as:
include?
575
576
577
|
# File 'lib/familia/redisobject.rb', line 575
def member? v
!rank(v).nil?
end
|
#members(count = -1,, opts = {}) ⇒ Object
Also known as:
to_a, all
592
593
594
595
|
# File 'lib/familia/redisobject.rb', line 592
def members count=-1, opts={}
count -= 1 if count > 0
range 0, count, opts
end
|
#membersraw(count = -1,, opts = {}) ⇒ Object
599
600
601
602
|
# File 'lib/familia/redisobject.rb', line 599
def membersraw count=-1, opts={}
count -= 1 if count > 0
rangeraw 0, count, opts
end
|
#range(sidx, eidx, opts = {}) ⇒ Object
646
647
648
649
|
# File 'lib/familia/redisobject.rb', line 646
def range sidx, eidx, opts={}
echo :range, caller[0] if Familia.debug
rangeraw(sidx, eidx, opts).collect { |v| from_redis(v) }.compact
end
|
#rangebyscore(sscore, escore, opts = {}) ⇒ Object
e.g. obj.metrics.rangebyscore (now-12.hours), now, :limit => [0, 10]
667
668
669
670
|
# File 'lib/familia/redisobject.rb', line 667
def rangebyscore sscore, escore, opts={}
echo :rangebyscore, caller[0] if Familia.debug
rangebyscoreraw(sscore, escore, opts).collect { |v| from_redis( v) }.compact
end
|
#rangebyscoreraw(sscore, escore, opts = {}) ⇒ Object
672
673
674
675
676
|
# File 'lib/familia/redisobject.rb', line 672
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
656
657
658
659
|
# File 'lib/familia/redisobject.rb', line 656
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)
581
582
583
584
|
# File 'lib/familia/redisobject.rb', line 581
def rank v
ret = redis.zrank rediskey, to_redis(v)
ret.nil? ? nil : ret.to_i
end
|
#remrangebyrank(srank, erank) ⇒ Object
678
679
680
|
# File 'lib/familia/redisobject.rb', line 678
def remrangebyrank srank, erank
redis.zremrangebyrank rediskey, srank, erank
end
|
#remrangebyscore(sscore, escore) ⇒ Object
682
683
684
|
# File 'lib/familia/redisobject.rb', line 682
def remrangebyscore sscore, escore
redis.zremrangebyscore rediskey, sscore, escore
end
|
#revmembers(count = -1,, opts = {}) ⇒ Object
604
605
606
607
|
# File 'lib/familia/redisobject.rb', line 604
def revmembers count=-1, opts={}
count -= 1 if count > 0
revrange 0, count, opts
end
|
#revmembersraw(count = -1,, opts = {}) ⇒ Object
609
610
611
612
|
# File 'lib/familia/redisobject.rb', line 609
def revmembersraw count=-1, opts={}
count -= 1 if count > 0
revrangeraw 0, count, opts
end
|
#revrange(sidx, eidx, opts = {}) ⇒ Object
651
652
653
654
|
# File 'lib/familia/redisobject.rb', line 651
def revrange sidx, eidx, opts={}
echo :revrange, caller[0] if Familia.debug
revrangeraw(sidx, eidx, opts).collect { |v| from_redis(v) }.compact
end
|
#revrangeraw(sidx, eidx, opts = {}) ⇒ Object
661
662
663
664
|
# File 'lib/familia/redisobject.rb', line 661
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)
587
588
589
590
|
# File 'lib/familia/redisobject.rb', line 587
def revrank v
ret = redis.zrevrank rediskey, to_redis(v)
ret.nil? ? nil : ret.to_i
end
|
#score(v) ⇒ Object
Also known as:
[]
569
570
571
572
|
# File 'lib/familia/redisobject.rb', line 569
def score v
ret = redis.zscore rediskey, to_redis(v)
ret.nil? ? nil : ret.to_f
end
|
#select(&blk) ⇒ Object
626
627
628
|
# File 'lib/familia/redisobject.rb', line 626
def select &blk
members.select &blk
end
|
#selectraw(&blk) ⇒ Object
642
643
644
|
# File 'lib/familia/redisobject.rb', line 642
def selectraw &blk
membersraw.select &blk
end
|
#size ⇒ Object
Also known as:
length
549
550
551
|
# File 'lib/familia/redisobject.rb', line 549
def size
redis.zcard rediskey
end
|