Class: Familia::SortedSet

Inherits:
RedisObject show all
Defined in:
lib/familia/redisobject.rb

Instance Attribute Summary

Attributes inherited from RedisObject

#name, #parent, #redis

Instance Method Summary collapse

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

Constructor Details

This class inherits a constructor from Familia::RedisObject

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

Returns:

  • (Boolean)


473
474
475
# File 'lib/familia/redisobject.rb', line 473

def empty?
  size == 0
end

#firstObject

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

#lastObject

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?

Returns:

  • (Boolean)


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

#sizeObject Also known as: length



468
469
470
# File 'lib/familia/redisobject.rb', line 468

def size
  redis.zcard rediskey
end