Módulo: Mongo::QueryCache
- Definido em:
- build/ruby-driver-v2.19/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.
48 49 50 51 52 53 54 55 56 |
# File 'build/ruby-driver-v2.19/lib/mongo/query_cache.rb', linha 48 def cache habilitado = habilitado? auto.habilitado = true começar rendimento garantir auto.habilitado = habilitado end end |
.limpar ➤ nulo
Limpe o cache de query.
90 91 92 |
# File 'build/ruby-driver-v2.19/lib/mongo/query_cache.rb', linha 90 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.
103 104 105 106 107 108 109 110 |
# File 'build/ruby-driver-v2.19/lib/mongo/query_cache.rb', linha 103 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.
28 29 30 |
# File 'build/ruby-driver-v2.19/lib/mongo/query_cache.rb', linha 28 def habilitado=(valor) Thread.Current["[mongo]:query_cache:enabled"] = valor end |
.habilitado? ➤ true, false
O cache de query está habilitado no thread atual?
38 39 40 |
# File 'build/ruby-driver-v2.19/lib/mongo/query_cache.rb', linha 38 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.
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 208 209 210 211 |
# File 'build/ruby-driver-v2.19/lib/mongo/query_cache.rb', linha 181 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 mais nada end end |
.normalized_limit(limit) ➤ Objeto
213 214 215 216 217 218 219 |
# File 'build/ruby-driver-v2.19/lib/mongo/query_cache.rb', linha 213 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.
142 143 144 145 146 147 148 149 150 |
# File 'build/ruby-driver-v2.19/lib/mongo/query_cache.rb', linha 142 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.
64 65 66 67 68 69 70 71 72 |
# File 'build/ruby-driver-v2.19/lib/mongo/query_cache.rb', linha 64 def uncached habilitado = habilitado? auto.habilitado = false começar rendimento garantir auto.habilitado = habilitado end end |