Módulo: Mongo::QueryCache
- Definido em:
- lib/mongo/query_cache.rb
Definido sob namespace
Classes: Middleware
Recolhimento do Resumo do método de classe
-
.cache ➤ Objeto
Execute o bloco enquanto usa o cache de query.
-
.limpar ➤ nulo
Limpe o cache de query.
-
.clear_namespace(namespace) ➤ nil
privado
Limpe a seção do cache da query armazenando cursores com resultados desse namespace.
-
.habilitado=(valor) ➤ Objeto
Defina se o cache está ativado.
-
.habilitado? ➤ verdadeiro, falso
O cache de query está habilitado no thread atual?
-
.get(**opts) ➤ Mongo::CashingCursor | nada
privado
Para as opções de query fornecidas, recupere um cursor em cache que possa ser usado para obter os resultados corretos da query, se houver um no cache.
- .normalized_limit(limit) ➤ Objeto
-
.set(cursor, **opts) ➤ true
privado
Armazene uma instância CashingCursor no cache de query associado às opções de query especificadas.
-
. objeto sem cache
Execute o bloco com o cache de query desabilitado.
Detalhes do método de classe
.cache ➤ Objeto
Execute o bloco enquanto usa o cache de query.
46 47 48 49 50 51 52 53 54 |
# Arquivo 'lib/mongo/query_cache.rb', linha 46 def cache habilitado = habilitado? auto.habilitado = true começar rendimento garantir auto.habilitado = habilitado end end |
.limpar ➤ nulo
Limpe o cache de query.
88 89 90 |
# Arquivo 'lib/mongo/query_cache.rb', linha 88 def Limpar Thread.Current['[mongo]:query_cache'] = nada end |
.clear_namespace(namespace) ➤ nil
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Limpe a seção do cache da query armazenando cursores com resultados desse namespace.
101 102 103 104 105 106 107 108 |
# Arquivo 'lib/mongo/query_cache.rb', linha 101 def clear_namespace(namespace) cache_table.excluir(namespace) # A chave nil é onde os cursores são armazenados que podem potencialmente ler de # múltiplas coleções. Esta chave deve ser limpa em cada operação de gravação # para evitar o retorno de dados obsoletos. cache_table.excluir(nada) nada end |
.habilitado=(valor) ➤ Objeto
Defina se o cache está ativado.
26 27 28 |
# Arquivo 'lib/mongo/query_cache.rb', linha 26 def habilitado=(valor) Thread.Current['[mongo]:query_cache:enabled'] = valor end |
.habilitado? ➤ true, false
O cache de query está habilitado no thread atual?
36 37 38 |
# Arquivo 'lib/mongo/query_cache.rb', linha 36 def habilitado? !!Thread.Current['[mongo]:query_cache:enabled'] end |
.get(**opts) ➤ Mongo::CashingCursor | nada
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Para as opções de query fornecidas, recupere um cursor em cache que possa ser usado para obter os resultados corretos da query, se houver um no cache.
179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 |
# Arquivo 'lib/mongo/query_cache.rb', linha 179 def obter(**opciona) limit = normalized_limit(opciona[:limit]) _namespace_key = namespace_key(**opciona) _cache_key = cache_key(**opciona) namespace_hash = cache_table[_namespace_key] Método nada a menos que namespace_hash caching_cursor = namespace_hash[_cache_key] Método nada a menos que caching_cursor cache_cursor_limit = normalized_limit(caching_cursor.vista.limit) # Existem dois cenários em que um cursor de cache pode atender à # query: # 1. A query tem um limite e o cursor armazenado não tem limite ou # um limite maior. # 2. A consulta não tem limite e o cursor armazenado não tem limite. # # Caso contrário, retorne nulo porque o cursor armazenado não satisfazer # a query. se limit && (cache_cursor_limit.nada? || cache_cursor_limit >= limit) caching_cursor elsif limit.nada? && cache_cursor_limit.nada? caching_cursor end end |
.normalized_limit(limit) ➤ Objeto
209 210 211 212 213 214 215 216 |
# Arquivo 'lib/mongo/query_cache.rb', linha 209 def normalized_limit(limit) Método nada a menos que limit # Para fins de cache, um limite de 0 significa que não há limite, pois o mongo o trata como tal. Método nada se limit == 0 # Para fins de cache, um limite negativo é o mesmo que um limite positivo. limit.abs end |
.set(cursor, **opts) ➤ true
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Armazene uma instância CashingCursor no cache de query associado às opções de query especificadas.
140 141 142 143 144 145 146 147 148 |
# Arquivo 'lib/mongo/query_cache.rb', linha 140 def set(cursor, **opciona) _cache_key = cache_key(**opciona) _namespace_key = namespace_key(**opciona) cache_table[_namespace_key] ||= {} cache_table[_namespace_key][_cache_key] = cursor true end |
. objetosem cache
Execute o bloco com o cache de query desabilitado.
62 63 64 65 66 67 68 69 70 |
# Arquivo 'lib/mongo/query_cache.rb', linha 62 def uncached habilitado = habilitado? auto.habilitado = false começar rendimento garantir auto.habilitado = habilitado end end |