Class: SidekiqUniqueJobs::Redis::SortedSet

Inherits:
Entity
  • Object
show all
Defined in:
lib/sidekiq_unique_jobs/redis/sorted_set.rb

Overview

Class SortedSet provides convenient access to redis sorted sets

Author:

Direct Known Subclasses

Changelog, Digests

Constant Summary collapse

DEFAULT_COUNT =

Returns the number of matches to return by default.

Returns:

  • (Integer)

    the number of matches to return by default

1_000
SCAN_PATTERN =

Returns the default pattern to use for matching.

Returns:

  • (String)

    the default pattern to use for matching

"*"

Instance Attribute Summary

Attributes inherited from Entity

#key

Instance Method Summary collapse

Methods inherited from Entity

#exist?, #expires?, #initialize, #pttl, #ttl

Methods included from Timing

clock_stamp, now_f, time_source, timed

Methods included from JSON

dump_json, load_json, safe_load_json

Methods included from Script::Caller

call_script, debug_lua, do_call, extract_args, max_history, normalize_argv, now_f, redis_version

Methods included from Logging

#build_message, included, #log_debug, #log_error, #log_fatal, #log_info, #log_warn, #logger, #logging_context, #with_configured_loggers_context, #with_logging_context

Constructor Details

This class inherits a constructor from SidekiqUniqueJobs::Redis::Entity

Instance Method Details

#add(values) ⇒ Boolean, Integer

Adds a value to the sorted set

Parameters:

Returns:

  • (Boolean, Integer)

    <description>



40
41
42
43
44
45
46
47
48
# File 'lib/sidekiq_unique_jobs/redis/sorted_set.rb', line 40

def add(values)
  redis do |conn|
    if values.is_a?(Array)
      conn.zadd(key, *values)
    else
      conn.zadd(key, now_f, values)
    end
  end
end

#clearInteger

Clears the sorted set from all entries

Returns:

  • (Integer)

    number of entries removed



78
79
80
# File 'lib/sidekiq_unique_jobs/redis/sorted_set.rb', line 78

def clear
  redis { |conn| conn.zremrangebyrank(key, 0, count) }
end

#countInteger

Returns the count for this sorted set

Returns:

  • (Integer)

    the number of entries



88
89
90
# File 'lib/sidekiq_unique_jobs/redis/sorted_set.rb', line 88

def count
  redis { |conn| conn.zcard(key) }
end

#entries(with_scores: true) ⇒ Array<Object>, Hash

Return entries for this sorted set

Parameters:

  • with_scores (true, false) (defaults to: true)

    true return

Returns:

  • (Array<Object>)

    when given with_scores: false

  • (Hash)

    when given with_scores: true



26
27
28
29
30
31
# File 'lib/sidekiq_unique_jobs/redis/sorted_set.rb', line 26

def entries(with_scores: true)
  entrys = redis { |conn| conn.zrange(key, 0, -1, withscores: with_scores) }
  return entrys unless with_scores

  entrys.each_with_object({}) { |pair, hash| hash[pair[0]] = pair[1] }
end

#rank(member) ⇒ Integer

Return the zrak of the member

Parameters:

  • member (String)

    the member to pull rank on

Returns:

  • (Integer)


57
58
59
# File 'lib/sidekiq_unique_jobs/redis/sorted_set.rb', line 57

def rank(member)
  redis { |conn| conn.zrank(key, member) }
end

#score(member) ⇒ Integer, Float

Return score for a member

Parameters:

  • member (String)

    the member for which score

Returns:

  • (Integer, Float)


68
69
70
# File 'lib/sidekiq_unique_jobs/redis/sorted_set.rb', line 68

def score(member)
  redis { |conn| conn.zscore(key, member) }
end