module SidekiqScheduler::RedisManager
def self.add_schedule_change(name)
-
name
(String
) -- The name of the job
def self.add_schedule_change(name) Sidekiq.redis { |r| r.zadd(schedules_changed_key, Time.now.to_f, name) } end
def self.clean_schedules_changed
def self.clean_schedules_changed Sidekiq.redis { |r| r.del(schedules_changed_key) unless r.type(schedules_changed_key) == 'zset' } end
def self.get_all_schedules
-
(Hash)
- hash with all the job schedules
def self.get_all_schedules Sidekiq.redis { |r| r.hgetall(schedules_key) } end
def self.get_job_last_time(name)
-
(String)
- last time the job was executed
Parameters:
-
name
(String
) -- The name of the job
def self.get_job_last_time(name) hget(last_times_key, name) end
def self.get_job_next_time(name)
-
(String)
- next time the job has to be executed
Parameters:
-
name
(String
) -- The name of the job
def self.get_job_next_time(name) hget(next_times_key, name) end
def self.get_job_schedule(name)
-
(String)
- schedule in JSON format
Parameters:
-
name
(String
) -- The name of the job
def self.get_job_schedule(name) hget(schedules_key, name) end
def self.get_job_state(name)
-
(String)
- state in JSON format
Parameters:
-
name
(String
) -- The name of the job
def self.get_job_state(name) hget(schedules_state_key, name) end
def self.get_schedule_changes(from, to)
-
(Array)
- array with all the changed job names
Parameters:
-
to
(Float
) -- The maximum value in the range -
from
(Float
) -- The minimum value in the range
def self.get_schedule_changes(from, to) SidekiqScheduler::SidekiqAdapter.redis_zrangebyscore(schedules_changed_key, from, "(#{to}") end
def self.hdel(hash_key, field_key)
-
field_key
(String
) -- The key name of the field -
hash_key
(String
) -- The key name of the hash
def self.hdel(hash_key, field_key) Sidekiq.redis { |r| r.hdel(hash_key, field_key) } end
def self.hget(hash_key, field_key)
-
(String)
-
Parameters:
-
field_key
(String
) -- The key name of the field -
hash_key
(String
) -- The key name of the hash
def self.hget(hash_key, field_key) Sidekiq.redis { |r| r.hget(hash_key, field_key) } end
def self.hset(hash_key, field_key, value)
-
value
(String
) -- The new value name for the field -
field_key
(String
) -- The key name of the field -
hash_key
(String
) -- The key name of the hash
def self.hset(hash_key, field_key, value) Sidekiq.redis { |r| r.hset(hash_key, field_key, value) } end
def self.key_prefix
-
(String)
- with the key prefix
def self.key_prefix @key_prefix end
def self.key_prefix=(value)
-
value
(String
) -- The string to use as the prefix. A ":" will be appended as a delimiter if needed.
def self.key_prefix=(value) value = "#{value}:" if value && !%w[. :].include?(value[-1]) @key_prefix = value end
def self.last_times_key
-
(String)
- with the key
def self.last_times_key "#{key_prefix}sidekiq-scheduler:last_times" end
def self.next_times_key
-
(String)
- with the key
def self.next_times_key "#{key_prefix}sidekiq-scheduler:next_times" end
def self.pushed_job_key(job_name)
-
(String)
- the pushed job key
Parameters:
-
job_name
(String
) -- The name of the job
def self.pushed_job_key(job_name) "#{key_prefix}sidekiq-scheduler:pushed:#{job_name}" end
def self.register_job_instance(job_name, time)
-
(Boolean)
- true if the job was registered, false otherwise
Parameters:
-
time
(Time
) -- The time at which the job was cleared by the scheduler -
job_name
(String
) -- The name of the job
def self.register_job_instance(job_name, time) job_key = pushed_job_key(job_name) registered, _ = Sidekiq.redis do |r| r.multi do |m| m.zadd(job_key, time.to_i, time.to_i) m.expire(job_key, REGISTERED_JOBS_THRESHOLD_IN_SECONDS) end end registered.instance_of?(Integer) ? (registered > 0) : registered end
def self.remove_elder_job_instances(job_name)
-
job_name
(String
) -- The name of the job
def self.remove_elder_job_instances(job_name) seconds_ago = Time.now.to_i - REGISTERED_JOBS_THRESHOLD_IN_SECONDS Sidekiq.redis do |r| r.zremrangebyscore(pushed_job_key(job_name), 0, seconds_ago) end end
def self.remove_job_next_time(name)
-
name
(String
) -- The name of the job
def self.remove_job_next_time(name) hdel(next_times_key, name) end
def self.remove_job_schedule(name)
-
name
(String
) -- The name of the job
def self.remove_job_schedule(name) hdel(schedules_key, name) end
def self.schedule_exist?
-
(Boolean)
- true if the schedules key is set, false otherwise
def self.schedule_exist? SidekiqScheduler::SidekiqAdapter.redis_key_exists?(schedules_key) end
def self.schedules_changed_key
-
(String)
- with the key
def self.schedules_changed_key "#{key_prefix}schedules_changed" end
def self.schedules_key
-
(String)
- with the key
def self.schedules_key "#{key_prefix}schedules" end
def self.schedules_state_key
-
(String)
- with the key
def self.schedules_state_key "#{key_prefix}sidekiq-scheduler:states" end
def self.set_job_last_time(name, last_time)
-
last_time
(String
) -- The last time the job was executed -
name
(String
) -- The name of the job
def self.set_job_last_time(name, last_time) hset(last_times_key, name, String(last_time)) end
def self.set_job_next_time(name, next_time)
-
next_time
(String
) -- The next time the job has to be executed -
name
(String
) -- The name of the job
def self.set_job_next_time(name, next_time) hset(next_times_key, name, String(next_time)) end
def self.set_job_schedule(name, config)
-
config
(Hash
) -- The new schedule for the job -
name
(String
) -- The name of the job
def self.set_job_schedule(name, config) hset(schedules_key, name, JSON.generate(config)) end
def self.set_job_state(name, state)
-
state
(Hash
) -- The new state for the job -
name
(String
) -- The name of the job
def self.set_job_state(name, state) hset(schedules_state_key, name, JSON.generate(state)) end