Module: Mongo::QueryCache
- Definido en:
- lib/mongo/query_cache.rb
Definido en el espacio de nombres
Clases: Middleware
Colapso delresumen del método de clase
-
.caché ⇒ Objeto
Ejecutar el bloque mientras se utiliza el caché de consultas.
-
.clear ⇒ nil
Limpiar la caché de consultas.
-
.clear_namespace(espacio de nombres) ⇒ nil
privada
Limpia la sección de la caché de query que almacena cursores con resultados de este namespace.
-
.habilitado=(valor) ⇒ Objeto
Establece si el caché está habilitado.
-
.habilitado? ⇒ verdadero, falso
¿Está habilitado el caché de consultas en el hilo actual?
-
.obtener(**opciones) ⇒ Mongo::CachingCursor | nulo
privada
Para las opciones de consulta dadas, recupere un cursor almacenado en caché que pueda usarse para obtener los resultados de consulta correctos, si existe uno en el caché.
- .normalized_limit(límite) ⇒ Objeto
-
.establecer(cursor, **opciones) ⇒ verdadero
privada
Almacene una instancia de CachingCursor en la caché de consultas asociada con las opciones de consulta especificadas.
-
.sin almacenar en caché ⇒ Objeto
Ejecutar el bloque con el caché de consultas deshabilitado.
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 = ¿activado? yo.habilitado = true begin rendimiento asegurar yo.habilitado = habilitado end end |
.claro ⇒ nulo
Limpiar la caché de consultas.
90 91 92 |
# Archivo 'lib/mongo/query_cache.rb', línea 90 def borrar Hilo.actual["[mongo]:caché de consultas"] = nulo end |
.clear_namespace(espacio de nombres) ⇒ 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 espacio de nombres claro(namespace) tabla_de_caché.borrar(namespace) # La clave nula es donde se almacenan los cursores que potencialmente podrían leer desde # Múltiples colecciones. Esta clave debe borrarse en cada operación de escritura. # para evitar devolver datos obsoletos. tabla_de_caché.borrar(nulo) nulo end |
.habilitado=(valor) ⇒ Objeto
Establece si el caché está habilitado.
28 29 30 |
# Archivo 'lib/mongo/query_cache.rb', línea 28 def habilitado=(valor) Hilo.actual["[mongo]:query_cache:habilitado"] = valor end |
.habilitado? ⇒ verdadero, falso
¿Está habilitado el caché de consultas en el hilo actual?
38 39 40 |
# Archivo 'lib/mongo/query_cache.rb', línea 38 def ¿activado? !!Hilo.actual["[mongo]:query_cache:habilitado"] end |
.obtener(**opciones) ⇒ Mongo::CachingCursor | nulo
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 consulta dadas, recupere un cursor almacenado en caché que pueda usarse para obtener los resultados de consulta correctos, si existe uno en el 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]) _clave_de_espacio_de_nombres = clave_de_espacio_de_nombres(**opta) _clave_de_caché = cache_key(**opta) namespace_hash = tabla_de_caché[_clave_de_espacio_de_nombres] return nulo a no ser que namespace_hash caching_cursor = namespace_hash[_clave_de_caché] return nulo a no ser 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 consulta no tiene límite y el cursor almacenado no tiene límite. # # De lo contrario, devuelve nil porque el cursor almacenado no 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(límite) ⇒ 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 no ser 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 |
.establecer(cursor, **opciones) ⇒ verdadero
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) _clave_de_caché = cache_key(**opta) _clave_de_espacio_de_nombres = clave_de_espacio_de_nombres(**opta) tabla_de_caché[_clave_de_espacio_de_nombres] ||= {} tabla_de_caché[_clave_de_espacio_de_nombres][_clave_de_caché] = cursor true end |
.sin almacenar en caché ⇒ Objeto
Ejecutar el bloque con el caché de consultas deshabilitado.
64 65 66 67 68 69 70 71 72 |
# Archivo 'lib/mongo/query_cache.rb', línea 64 def sin almacenar en caché habilitado = ¿activado? yo.habilitado = false begin rendimiento asegurar yo.habilitado = habilitado end end |