Class: Familia::SortedSet
Instance Attribute Summary
Attributes inherited from RedisObject
#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
-
#decrement(v, by = 1) ⇒ Object
(also: #decr, #decrby)
-
#delete(v) ⇒ Object
(also: #remove, #rem, #del)
-
#each(&blk) ⇒ Object
-
#each_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)
-
#range(sidx, eidx, opts = {}) ⇒ Object
-
#rangebyscore(sscore, escore, 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
-
#revrange(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
-
#size ⇒ Object
(also: #length)
Methods inherited from RedisObject
#db, #dump_method, #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
479
480
481
|
# File 'lib/familia/redisobject.rb', line 479
def []= v, score
add score, v
end
|
#add(score, v) ⇒ Object
NOTE: The argument order is the reverse of #[]=
484
485
486
|
# File 'lib/familia/redisobject.rb', line 484
def add score, v
redis.zadd rediskey, score, to_redis(v)
end
|
#at(idx) ⇒ Object
588
589
590
|
# File 'lib/familia/redisobject.rb', line 588
def at idx
range(idx, idx).first
end
|
#collect(&blk) ⇒ Object
531
532
533
|
# File 'lib/familia/redisobject.rb', line 531
def collect &blk
members.collect &blk
end
|
#decrement(v, by = 1) ⇒ Object
Also known as:
decr, decrby
575
576
577
|
# File 'lib/familia/redisobject.rb', line 575
def decrement v, by=1
increment v, -by
end
|
#delete(v) ⇒ Object
Also known as:
remove, rem, del
581
582
583
|
# File 'lib/familia/redisobject.rb', line 581
def delete v
redis.zrem rediskey, to_redis(v)
end
|
#each(&blk) ⇒ Object
523
524
525
|
# File 'lib/familia/redisobject.rb', line 523
def each &blk
members.each &blk
end
|
#each_with_index(&blk) ⇒ Object
527
528
529
|
# File 'lib/familia/redisobject.rb', line 527
def each_with_index &blk
members.each_with_index &blk
end
|
#empty? ⇒ Boolean
473
474
475
|
# File 'lib/familia/redisobject.rb', line 473
def empty?
size == 0
end
|
#first ⇒ Object
Return the first element in the list. Redis: ZRANGE(0)
593
594
595
|
# File 'lib/familia/redisobject.rb', line 593
def first
at(0)
end
|
#increment(v, by = 1) ⇒ Object
Also known as:
incr, incrby
569
570
571
|
# File 'lib/familia/redisobject.rb', line 569
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)
598
599
600
|
# File 'lib/familia/redisobject.rb', line 598
def last
at(-1)
end
|
#member?(v) ⇒ Boolean
Also known as:
include?
494
495
496
|
# File 'lib/familia/redisobject.rb', line 494
def member? v
!rank(v).nil?
end
|
#members(count = -1,, opts = {}) ⇒ Object
Also known as:
to_a, all
511
512
513
514
|
# File 'lib/familia/redisobject.rb', line 511
def members count=-1, opts={}
count -= 1 if count > 0
range 0, count, opts
end
|
#range(sidx, eidx, opts = {}) ⇒ Object
539
540
541
542
543
544
|
# File 'lib/familia/redisobject.rb', line 539
def range sidx, eidx, opts={}
opts[:with_scores] = true if opts[:withscores]
redis.zrange(rediskey, sidx, eidx, opts).collect do |v|
from_redis v
end
end
|
#rangebyscore(sscore, escore, opts = {}) ⇒ Object
e.g. obj.metrics.rangebyscore (now-12.hours), now, :limit => [0, 10]
554
555
556
557
558
559
|
# File 'lib/familia/redisobject.rb', line 554
def rangebyscore sscore, escore, opts={}
opts[:with_scores] = true if opts[:withscores]
redis.zrangebyscore(rediskey, sscore, escore, opts).collect do |v|
from_redis v
end
end
|
#rank(v) ⇒ Object
rank of member v
when ordered lowest to highest (starts at 0)
500
501
502
503
|
# File 'lib/familia/redisobject.rb', line 500
def rank v
ret = redis.zrank rediskey, to_redis(v)
ret.nil? ? nil : ret.to_i
end
|
#remrangebyrank(srank, erank) ⇒ Object
561
562
563
|
# File 'lib/familia/redisobject.rb', line 561
def remrangebyrank srank, erank
redis.zremrangebyrank rediskey, srank, erank
end
|
#remrangebyscore(sscore, escore) ⇒ Object
565
566
567
|
# File 'lib/familia/redisobject.rb', line 565
def remrangebyscore sscore, escore
redis.zremrangebyscore rediskey, sscore, escore
end
|
#revmembers(count = -1,, opts = {}) ⇒ Object
518
519
520
521
|
# File 'lib/familia/redisobject.rb', line 518
def revmembers count=-1, opts={}
count -= 1 if count > 0
revrange 0, count, opts
end
|
#revrange(sidx, eidx, opts = {}) ⇒ Object
546
547
548
549
550
551
|
# File 'lib/familia/redisobject.rb', line 546
def revrange sidx, eidx, opts={}
opts[:with_scores] = true if opts[:withscores]
redis.zrevrange(rediskey, sidx, eidx, opts).collect do |v|
from_redis v
end
end
|
#revrank(v) ⇒ Object
rank of member v
when ordered highest to lowest (starts at 0)
506
507
508
509
|
# File 'lib/familia/redisobject.rb', line 506
def revrank v
ret = redis.zrevrank rediskey, to_redis(v)
ret.nil? ? nil : ret.to_i
end
|
#score(v) ⇒ Object
Also known as:
[]
488
489
490
491
|
# File 'lib/familia/redisobject.rb', line 488
def score v
ret = redis.zscore rediskey, to_redis(v)
ret.nil? ? nil : ret.to_f
end
|
#select(&blk) ⇒ Object
535
536
537
|
# File 'lib/familia/redisobject.rb', line 535
def select &blk
members.select &blk
end
|
#size ⇒ Object
Also known as:
length
468
469
470
|
# File 'lib/familia/redisobject.rb', line 468
def size
redis.zcard rediskey
end
|