Class: SolidCache::Entry
- Inherits:
-
Record
- Object
- ActiveRecord::Base
- Record
- SolidCache::Entry
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_delete ⇒ Object
41
42
43
|
# File 'app/models/solid_cache/entry.rb', line 41
def clear_delete
in_batches.delete_all
end
|
.clear_truncate ⇒ Object
37
38
39
|
# File 'app/models/solid_cache/entry.rb', line 37
def clear_truncate
connection.truncate(table_name)
end
|
.decrement(key, amount) ⇒ Object
55
56
57
|
# File 'app/models/solid_cache/entry.rb', line 55
def decrement(key, amount)
increment(key, -amount)
end
|
.delete_by_key(key) ⇒ Object
26
27
28
|
# File 'app/models/solid_cache/entry.rb', line 26
def delete_by_key(key)
delete_no_query_cache(:key, to_binary(key))
end
|
.delete_matched(matcher, batch_size:) ⇒ Object
30
31
32
33
34
35
|
# File 'app/models/solid_cache/entry.rb', line 30
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
65
66
67
68
69
|
# File 'app/models/solid_cache/entry.rb', line 65
def expire(count, max_age:, max_entries:)
if (ids = expiry_candidate_ids(count, max_age: max_age, max_entries: max_entries)).any?
delete(ids)
end
end
|
.id_range ⇒ Object
59
60
61
62
63
|
# File 'app/models/solid_cache/entry.rb', line 59
def id_range
uncached do
pick(Arel.sql("max(id) - min(id) + 1")) || 0
end
end
|
.increment(key, amount) ⇒ Object
45
46
47
48
49
50
51
52
53
|
# File 'app/models/solid_cache/entry.rb', line 45
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
17
18
19
|
# File 'app/models/solid_cache/entry.rb', line 17
def read(key)
select_all_no_query_cache(get_sql, to_binary(key)).first
end
|
.read_multi(keys) ⇒ Object
21
22
23
24
|
# File 'app/models/solid_cache/entry.rb', line 21
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
9
10
11
|
# File 'app/models/solid_cache/entry.rb', line 9
def write(key, value)
upsert_all_no_query_cache([ { key: key, value: value } ])
end
|
.write_multi(payloads) ⇒ Object
13
14
15
|
# File 'app/models/solid_cache/entry.rb', line 13
def write_multi(payloads)
upsert_all_no_query_cache(payloads)
end
|