Class: SolidCache::Entry

Inherits:
Record
  • Object
show all
Defined in:
app/models/solid_cache/entry.rb

Constant Summary

Constants inherited from Record

Record::NULL_INSTRUMENTER

Class Method Summary collapse

Methods inherited from Record

disable_instrumentation, with_shard

Class Method Details

.clear_deleteObject



43
44
45
# File 'app/models/solid_cache/entry.rb', line 43

def clear_delete
  in_batches.delete_all
end

.clear_truncateObject



39
40
41
# File 'app/models/solid_cache/entry.rb', line 39

def clear_truncate
  connection.truncate(table_name)
end

.decrement(key, amount) ⇒ Object



57
58
59
# File 'app/models/solid_cache/entry.rb', line 57

def decrement(key, amount)
  increment(key, -amount)
end

.delete_by_key(key) ⇒ Object



28
29
30
# File 'app/models/solid_cache/entry.rb', line 28

def delete_by_key(key)
  delete_no_query_cache(:key, to_binary(key))
end

.delete_matched(matcher, batch_size:) ⇒ Object



32
33
34
35
36
37
# File 'app/models/solid_cache/entry.rb', line 32

def delete_matched(matcher, batch_size:)
  like_matcher = arel_table[:key].matches(matcher, nil, true)
  where(like_matcher).select(:id).find_in_batches(batch_size: batch_size) do |entries|
    delete_no_query_cache(:id, entries.map(&:id))
  end
end

.expire(count, max_age:, max_entries:) ⇒ Object



24
25
26
# File 'app/models/solid_cache/entry.rb', line 24

def expire(ids)
  delete_no_query_cache(:id, ids) if ids.any?
end

.id_rangeObject



61
62
63
64
65
# File 'app/models/solid_cache/entry.rb', line 61

def id_range
  uncached do
    pick(Arel.sql("max(id) - min(id) + 1")) || 0
  end
end

.increment(key, amount) ⇒ Object



47
48
49
50
51
52
53
54
55
# File 'app/models/solid_cache/entry.rb', line 47

def increment(key, amount)
  transaction do
    uncached do
      amount += lock.where(key: key).pick(:value).to_i
      write(key, amount)
      amount
    end
  end
end

.read(key) ⇒ Object



15
16
17
# File 'app/models/solid_cache/entry.rb', line 15

def read(key)
  select_all_no_query_cache(get_sql, to_binary(key)).first
end

.read_multi(keys) ⇒ Object



19
20
21
22
# File 'app/models/solid_cache/entry.rb', line 19

def read_multi(keys)
  serialized_keys = keys.map { |key| to_binary(key) }
  select_all_no_query_cache(get_all_sql(serialized_keys), serialized_keys).to_h
end

.write(key, value) ⇒ Object



7
8
9
# File 'app/models/solid_cache/entry.rb', line 7

def write(key, value)
  upsert_all_no_query_cache([ { key: key, value: value } ])
end

.write_multi(payloads) ⇒ Object



11
12
13
# File 'app/models/solid_cache/entry.rb', line 11

def write_multi(payloads)
  upsert_all_no_query_cache(payloads)
end