Module: Mongo::QueryCache
- Definido en:
- lib/mongo/query_cache.rb
Definido bajo Namespace
Clases: Middleware
Resumen del método de clase colapsar
-
.cache ⇒ Objeto
Ejecutar el bloque mientras se utiliza el caché de consultas.
-
.clear ⇒ nil
Borre la caché de query.
-
.clear_namespace(espacio de nombres) ⇒ nil
privado
Limpia la sección de la caché de query que almacena cursores con resultados de este namespace.
-
.enabled=(valor) ⇒ Objeto
Establezca si la caché está habilitada.
-
.habilitado? ⇒ verdadero, falso
¿Está habilitada la caché de queries en el hilo actual?.
-
.obtener(**opciones) ⇒ Mongo::CachingCursor | nulo
privado
Para las opciones de query dadas, recuperar un cursor en caché que pueda utilizarse para obtener los resultados de query correctos, si existe en la caché.
- .normalized_limit(límite) ⇒ Objeto
-
.establecer(cursor, **opciones) ⇒ verdadero
privado
Almacene una instancia de CachingCursor en la caché de consultas asociada con las opciones de consulta especificadas.
-
.no almacenado en caché ⇒ Objeto
Ejecute el bloque con la caché de consultas deshabilitada.
Detalles del método de clase
.caché ⇒ Objeto
Ejecutar el bloque mientras se utiliza el caché de consultas.
48 49 50 51 52 53 54 55 56 |
# Archivo 'lib/mongo/query_cache.rb', línea 48 def cache habilitado = ¿habilitado? sí mismo.habilitado = true begin rendimiento asegurar sí mismo.habilitado = habilitado end end |
.clear ⇒ nil
Borre la caché de query.
90 91 92 |
# Archivo 'lib/mongo/query_cache.rb', línea 90 def borrar Hilo.Actual["[mongo]:caché de consultas"] = nulo end |
.clear_namespace(namespace) ⇒ nil
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Limpia la sección de la caché de query que almacena cursores con resultados de este namespace.
103 104 105 106 107 108 109 110 |
# Archivo 'lib/mongo/query_cache.rb', línea 103 def clear_namespace(namespace) tabla_de_cache.borrar(namespace) # La clave nil es donde se almacenan los cursor que podrían leer de # múltiples colecciones. Esta clave debe ser eliminada en cada operación de guardar # para evitar devolver datos obsoletos. tabla_de_cache.borrar(nulo) nulo end |
.enabled=(valor) ⇒ Objeto
Establezca si la caché está habilitada.
28 29 30 |
# Archivo 'lib/mongo/query_cache.rb', línea 28 def habilitado=(Valor) Hilo.Actual["[mongo]:query_cache:habilitado"] = Valor end |
.¿activado? ⇒ verdadero, falso
¿Está la caché de query habilitada en el hilo actual?
38 39 40 |
# Archivo 'lib/mongo/query_cache.rb', línea 38 def ¿habilitado? !!Hilo.Actual["[mongo]:query_cache:habilitado"] end |
.obtener(**opciones) ⇒ Mongo::CachingCursor | nil
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Para las opciones de query dadas, recuperar un cursor en caché que pueda utilizarse para obtener los resultados de query correctos, si existe en la caché.
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 |
# Archivo 'lib/mongo/query_cache.rb', línea 181 def Obtener(**opta) limit = límite normalizado(opta[:limit]) namespace = clave_de_espacio_de_nombres(**opta) caché = cache_key(**opta) namespace_hash = tabla_de_cache[namespace] return nulo a menos que namespace_hash caching_cursor = namespace_hash[caché] return nulo a menos que caching_cursor caching_cursor_limit = límite normalizado(caching_cursor.vista.limit) # Hay dos escenarios en los que un cursor de almacenamiento en caché podría cumplir la función # query: # 1. La consulta tiene un límite y el cursor almacenado no tiene límite o # un límite mayor. # 2. La query no tiene límite y el cursor almacenado no tiene límite. # # De lo contrario, devuelva nil porque el cursor almacenado no lo satisfará # la consulta. si limit && (caching_cursor_limit.nil? || caching_cursor_limit >= limit) caching_cursor elsif limit.nil? && caching_cursor_limit.nil? caching_cursor else nulo end end |
.normalized_limit(limit) ⇒ objeto
213 214 215 216 217 218 219 |
# Archivo 'lib/mongo/query_cache.rb', línea 213 def límite normalizado(limit) return nulo a menos que limit # Para fines de almacenamiento en caché, un límite de 0 significa que no hay límite, ya que mongo lo trata como tal. return nulo si limit == 0 # Para fines de almacenamiento en caché, un límite negativo es lo mismo que un límite positivo. limit.abs end |
.set(cursor, **opts) ⇒ true
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Almacene una instancia de CachingCursor en la caché de consultas asociada con las opciones de consulta especificadas.
142 143 144 145 146 147 148 149 150 |
# Archivo 'lib/mongo/query_cache.rb', línea 142 def conjunto(cursor, **opta) caché = cache_key(**opta) namespace = clave_de_espacio_de_nombres(**opta) tabla_de_cache[namespace] ||= {} tabla_de_cache[namespace][caché] = cursor true end |
.sin caché ⇒ Objeto
Ejecute el bloque con la caché de consultas deshabilitada.
64 65 66 67 68 69 70 71 72 |
# Archivo 'lib/mongo/query_cache.rb', línea 64 def no almacenado en la caché habilitado = ¿habilitado? sí mismo.habilitado = false begin rendimiento asegurar sí mismo.habilitado = habilitado end end |