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
43
44
45
|
# File 'app/models/solid_cache/entry.rb', line 43
def clear_delete
in_batches.delete_all
end
|
.clear_truncate ⇒ Object
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_range ⇒ Object
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
|