La cafeína aprendizaje 01

   La cafeína es un desarrollo Java8, de alto rendimiento, biblioteca caché local cercano al óptimo basado

2.1 de estrategia (Tamaño-base)

Caché de la tasa de éxito es un indicador importante para medir los pros y los contras de la caché del sistema, la memoria caché mediante el almacenamiento de datos utilizados con frecuencia o recientemente utilizados en un medio más rápido para aumentar la velocidad de acceso a datos, el espacio de caché está llena, se enfrenta a la forma de elegir a gota hacer espacio para los nuevos problemas de los datos, así que elige la salida derecha del algoritmo de caché afectará directamente a la tasa de acierto de caché. Comúnmente algoritmos de caché utilizados son:

  • First In First Out (FIFO) Como su nombre indica, es una cola FIFO, primero en la caché de los primeros en ser eliminados, ignorado acceso a los datos de frecuencia y número de información. Más primitivo, baja tasa de éxito.

  • Menos usada recientemente (LRU) algoritmo menos utilizado recientemente, la idea central es [si se accede a los datos recientes, entonces el futuro probabilidad de ser visitada es mayor], haciendo caso omiso de los datos de las visitas, la aplicación más común es la de mantener una lista se inserta el nuevo datos en la cola de la lista, se defendió de los datos en caché para mover la cola, la cola está llena equipo fuera del primer elemento. algoritmo LRU en el caso de los datos calientes tienen un buen rendimiento, pero si se enfrentan a un flujo repentino o acceso a datos periódica es una tasa de éxito se reduciría drásticamente.

  • utiliza menos frecuentemente (LFU) menos recientemente, la frecuencia de utilización, su idea central es que [si los datos utilizados para muchas visitas, entonces el futuro probabilidad de ser visitada es mayor], LFU se dio cuenta de la necesidad de mantener un contador de referencia para cada uno de los datos de caché, por último, los datos están fuera de servicio basado en el número de visitas, logrando así más compleja. eficiencia de los algoritmos LFU suele ser mayor que LRU, que se puede denominar un mejor tráfico de ráfaga monarca o problemas de acceso periódicas, sino porque LFU tomar algún tiempo para acumular su frecuencia de acceso, y por lo tanto no puede responder a los cambios de métodos de acceso de datos.

La cafeína es eliminado por el tampón de llamada estructura de datos W-TinyLFU implementado para que es una combinación de los algoritmos LRU y LFU se optimizaron, la figura muestra el rendimiento W-TinyLFU en relación con otros algoritmos, puede ver W-TinyLFU superior en consulta de datos, búsqueda, análisis y otras escenas son rendimiento.

 

2.1.1-TinyLFU

Ventana TinyLFU consta de los tres componentes siguientes:

  • ventana de acceso (Ventana de admisión), también conocido como Eden District, es una cola LRU más pequeño, su capacidad es de sólo el 1% del tamaño de la caché, el papel de esta ventana, principalmente para proteger algunos de los nuevos datos en la caché, dándoles un cierto grado de crecimiento tiempo de edificar su frecuencia de uso, para evitar ser eliminado rápidamente, y esta ventana también puede filtrar algo de tráfico inesperado.

  • filtro de frecuencia (TinyLFU) es el núcleo de la estrategia de eliminación de datos de cafeína, que se basa CountMin bosquejo visitas historia inexactas grabación de datos, de modo decidido a eliminar la política de caché de datos primarios, esta estructura de datos con un bajo coste para completar el caché datos de los registros de acceso y encontrar la frecuencia.

  • cache primaria (región principal) para almacenar la mayor parte de los datos de la memoria caché, la estructura de datos de una cola de segmento LRU (SLRU), y ProbationDeque ProtectedDeque que comprende dos partes, en el que el tamaño del 80% de la capacidad total ProtectedDeque, la parte utilizada TinyLFU la estrategia Adminsion de los datos, algunos de los datos de acceso de baja frecuencia puede ser eliminado rápidamente para evitar la contaminación de la nueva caché de memoria intermedia principal.

2.1.2 CountMin Boceto

La clave está en cómo algoritmo LFU puede eficientemente guardar y leer la información más reciente de la frecuencia de acceso a datos, la práctica habitual es utilizar el boceto de popularidad (una estructura de datos probabilístico) para identificar los "éxitos" de datos de eventos, por lo que el número de visitas datos grabados . CountMin-Sketch es uno de ellos, que está contando a través de una matriz y una pluralidad de algoritmo de hash, tal como se muestra:

 

El principio es similar a CountMin Bosquejo filtro Bloom , es una estructura de tipo de datos probabilístico. En el que los diferentes fila corresponde a un algoritmo de hash diferente, el tamaño de profundidad representa el número de algoritmo de hash, datos de anchura que representan el hash pueden variar. Cuando la tecla de grabación de un determinado número de accesos, utilizando diferentes algoritmos de hash para hacer la operación de comprobación aleatoria en la fila correspondiente, si es un formato de datos de un golpe, entonces el recuento + cuadrícula de datos de referencia. Cuando el número de consultas para acceder a una clave especificada, vaya a la específica hash múltiples formatos de datos, devuelve el menor número de visitas para el recuento de datos. El uso de varios algoritmos de hash puede reducir colisiones hash causadas por probabilidad de los datos inexactos, un aumento en la anchura de la gama puede mejorar la tecla de almohadilla para reducir la probabilidad de colisión, por lo que podemos ajustar la anchura y la profundidad del algoritmo de matriz para lograr el equilibrio entre las tasas de error de espacio, la eficiencia y la colisión de hash de propósito. CountMin Boceto La cafeína se logra a través de cuatro algoritmos hash y una larga serie, el método de aplicación específica puede referirse café latte Gran Dios de los artículos - en profundidad descifrado del futuro caché -La cafeína , no repetirlos aquí

Proceso de eliminación

  1. Todo el búfer de datos entrante se sumará a la primera zona Edén, cuando la cola alcanza su límite de capacidad, se activará el funcionamiento del Edén out, el exceso será delegada a las entradas de libertad condicional de cola de la memoria caché primaria, se hace referencia a los datos candidato.

  2. se obtiene la libertad condicional en la cola de datos, si no se elimina antes de la hora principal búfer de acceso, el nodo será protegida complemento en la cola, un proceso conocido como Nodo Promoción.

  3. cola protecte alcanza su límite de capacidad si el proceso Nodo Demotion gatillo, los elementos de la cola será la primera porción y peek en la cola de libertad vigilada.

  4. Tamaño de la cache primaria (tamaño + Protegida tamaño de libertad condicional) alcanza su límite de capacidad dará lugar a los datos fuera de la zona cache primaria, se selecciona preferentemente como la libertad condicional la cola de salida, Si la libertad condicional está vacía, la selección cola protegido se elimina.

  5. elementos de la cabecera se seleccionaron como la víctima fuera de la cola (la víctima), los elementos de la cola como un competidor (candidato), seleccione para acceder a la eliminación definitiva por comparación de tanto la frecuencia, en el que la frecuencia de acceso obtenida por CountMin bosquejo.

Aquí cafeína para eliminar competidores no es simplemente juzgar la frecuencia de acceso inferior o igual a la víctima, pero añadió la siguiente lógica:

  • Si es mayor la frecuencia de acceso de un competidor que 5 y menor o igual a la frecuencia de las víctimas fueron eliminados al azar, razón de esto es principalmente para evitar un grado de colisiones hash víctimas causadas por el crecimiento inorgánico frecuencia de acceso, lo que resulta en nuevos datos no se pueden escribir búfer blanco.

  • Si la frecuencia de la competencia es menor o igual a 5 directamente de los competidores, ya que el acceso TinyLFU frecuencia de los datos de grabación es de un máximo de 15, cuando el valor máximo excede el gatillo de reposición global sólo 7, por lo que si los datos sin un pre proceso térmico que puede conducir a una frecuencia más baja, porque las tácticas aleatorios atacante expulsados ​​de los datos caliente.

 

2.2 política de caducidad (Time-Based)

La necesidad y la importancia de los datos de caché de extinción sólo caducado reflejan en los requisitos de los escenarios de aplicación para la propia caché, limpia los datos antiguos pueden ahorrar espacio y reducir los costes de mantenimiento de caché, la memoria caché para mejorar el rendimiento, caché expira manera limpia se puede dividir para los siguientes dos (mis puntos de acuerdo a su propio entendimiento, no hay ninguna base para la información, estaba en la esperanza culpa que me corrija):

  • Limpieza de acceso, es decir, cada visita una caché de datos específica para determinar si está caducado, realizando una operación correspondiente. La ventaja de esta estrategia es simple, la desventaja se almacena en caché depende del acceso a la caché caduca, que hará que la contaminación se produce fenómeno de búfer de datos anticuadas, si uno no ha sido visitada de nuevo después de que éstos hayan caducado, entonces podría persistir en la memoria caché hasta estrategias de eliminación para eliminarlo.

  • Global limpieza, que en cierto período global de búfer de exploración, limpiar datos antiguos. La ventaja de este enfoque es que se puede borrar algunos datos antiguos, sin tener que depender de acceso a los datos. La desventaja es el alto coste de realización, requiere el uso de la estructura de datos adicional para mantener una cola expirado, implementar complejo, además de la tiempo de limpieza global de ocurrencia es también un problema espinoso.

2.2.1 limpieza

La cafeína en el acceso global a la limpieza y la limpieza son compatibles, para lograr el acceso para la limpieza como se muestra a continuación, debido a que la cafeína es una aplicación de caché LRU tiempo de cola en sí se mantiene el acceso de datos secuencial, no es necesario el uso adicional la estructura de almacenamiento de datos, cada uno sólo un vistazo encabezado de búfer cola de elemento se determina para ser expirado.

Para la limpieza en términos de dos problemas principales que deben resolverse mundial, a saber cómo elegir el momento de limpiar y cómo encontrar y eliminar los datos obsoletos rápidamente. En primer vistazo a la primera cuestión, en términos generales, hay dos maneras, una es dependiente de la caché de directivas de eliminación, la caché expira el gatillo una salida limpia de la memoria intermedia de la memoria caché cuando se producen límites de capacidad alcanzado, el segundo es para abrir una limpieza regular de la ejecución del hilo limpieza caducado. La cafeína seleccionar el segundo modo, la diferencia es que aquí no se logra mediante la aplicación de un hilo sondeo periódico, sino por las reglas de lectura-escritura de activación caché, modo de disparo y específicos de disparo en el control de concurrencia siguiente sección [] carril explica en detalle. Descubierto la manera de elegir el tema el tiempo de limpieza, nos fijamos en cómo encontrar rápidamente los datos expirado, la práctica habitual es la de mantener una cola de prioridad basado en el tiempo de caducidad, esta complejidad es O (log n), la cafeína es empleada en Kafka rueda de tiempo ( sus ruedas dentadas jerárquicas los ) método, inserción y eliminación de su complejidad en tiempo O (1), creo que los estudiantes hicieron programación de tareas cronometrada de esta estructura de datos no son ajenos aquí sólo un poco simple introducción

2.3 control de concurrencia (concurrencia-Control)

control de caché de concurrencia es un asunto problemático, debido a que las estrategias de eliminación de caché, las políticas de caducidad, por lo que implicará una modificación de la misma pieza de contenido de la caché, la forma más fácil es nada más que fácil de bloqueo de caché, el bloqueo está segmentado una solución más general para lograr ConcurrentyHashMap de (antes Java8) se basa en la subsección de bloqueo, pero debido a la competencia de bloqueo caché se produce principalmente en algunos datos calientes, y por lo tanto los beneficios traen segmentado bloqueo está limitado. La cafeína se utiliza en la reproducción cola de amortiguar mecanismo para mitigar el problema de la contención de bloqueo causado por concurrente, mientras que en términos de caché para operaciones de lectura es mucho mayor que la operación de escritura, por lo tanto, la cafeína en la cola para lectura y escritura del buffer también se utiliza para lograr diferentes ideas y hemos discutido en detalle la forma en que, a continuación.

 

2.3.1 cola de memoria intermedia - Leer

operación cafeína cada caché de lectura será primero ser escrito en la cola de memoria intermedia, la estructura de datos subyacente es un anillo de Buffer de rayas , rayado en el presente documento se refiere a un algoritmo de hash adquirida por la cerradura, para la misma clave (Java puede dirección de objeto diferente después) será hash para obtener el mismo objeto de bloqueo, la cafeína sobre la base de la correspondiente distribución de claves después de que el búfer de anillo de hash rayas, cabe señalar que la clave aquí no es los datos de la caché clave, pero el hilo en sí, por lo que el diseño los beneficios pueden desempeñar un papel en el recorte del aumento en el tráfico causado por el acceso a los datos caliente. Después de un exitoso caché de escritura determinará si se debe activar una programación de tareas asíncronas búfer basado en ciertas condiciones, el código es el siguiente. Se puede ver que cuando el búfer de anillo está lleno y la programación de estado se reúnen ciertas condiciones se disparará, entonces la corriente si la memoria cíclica está llena, la operación de escritura posterior de la cola de lectura se descarta directamente, esta información no se encuentra y ningún una gran influencia, que puede ser registrado como un datos TinyLFU caliente, donde la transferencia entre la máquina de estado se muestra en la figura proceso de transferencia de la máquina de estado en particular más complicado caso

 

2.3.2 cola de memoria intermedia - escritura

La cafeína es considerada una operación de escritura es mucho más pequeño que de lectura, por lo que todas las operaciones de escritura comparten la misma cola de memoria intermedia, cuando un productor único modelo de consumo de múltiples colas, la implementación específica se utiliza JCtools en el CBPD sin bloqueo (Multi Productor solo consumidor) cola de expansión automática, ya que no hay bloqueo y por lo tanto es muy eficiente. Pérdida operación de escritura no se puede tolerar, y por lo tanto la cafeína en cada operación de escritura desencadena una programación de tareas de memoria intermedia. tarea de escritura de reproducción (tanto de lectura y escritura) caché de datos y tampón producirá una condición de carrera puede dar lugar a supresiones de cambiar buscar un conjunto de datos de caché no se puede pedir para llevar a cabo operaciones para generar colgando Índice Problema , Caffenie para resolver este problema mediante la introducción de a define de máquina de estados del ciclo de vida del nodo. Viva en nombre del estado todavía en el nodo de caché, el nodo representante del estado retirado, pero no en la memoria caché se está borrando de la política, el estado muertos en nombre del nodo se ha eliminado de la caché.

2.3.1 tampón de cola de programación ( el trabajo de mantenimiento )

Las operaciones de lectura y escritura antes mencionados dará lugar a la zona de amortiguamiento de programación de tareas, y que esta tarea está programada al final se ha hecho estas cosas, el código. Se puede ver el programador de tareas de memoria intermedia (scheduleDrainBuffers) La cafeína es efectuado de forma asincrónica llama a realizar tareas de limpieza (PerformCleanupTask), donde el grupo de subprocesos mediante la aplicación ForkJoinPool. Sigue bajando en realidad puede ver las tareas de limpieza finales llevadas a cabo por los métodos de mantenimiento de contenido, adquirirá una evictionLock bloqueo de llamada antes de la ejecución, de hecho, ya se puede adivinar en donde la mayor parte de este trabajo es definitivamente fuera de la caché y contenido relacionado para ver el mantenimiento también verificada la conjetura anterior. La cafeína Por lo tanto, se puede concluir citó eliminado, las limitaciones de capacidad eliminado, eliminado por el caché de lectura y escritura expira caché después de ciertas reglas de operación para calcular el gatillo, lo que explica el antes mencionado se produce eliminación de tiempo de caducidad de la caché legado.

2.4 resumen

En la sección anterior se han descrito en detalle algunas de las competencias básicas cafeína y sus principios de aplicación, además de cafeína también proporciona actualización asíncrona, débil clave referencias, valor de referencia débil suave, de escucha, RBI monitoreo y otras funciones, la falta de espacio aquí no introducen. Una vez dicho esto, que en el extremo cafeína cómo usarlo? ¿Se va a tomar el tiempo para familiarizarse con la API? Yo diría que esta parte que no tiene que preocuparse, porque la API es de referencia completamente cafeína Google guayaba, la guayaba si tiene experiencia con el coste de transferencia es casi cero, donde algunos etiquetados caché de código de construcción cafeína, que no se pueden encontrar y guayaba exactamente lo mismo.

++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++

 

2.3 de estrategia de datos

En la cafeína todos los datos en ConcurrentHashMap, este y guayaba caché diferente, guayaba caché es una implementación interna de una estructura ConcurrentHashMap similar. Hay tres registros que se hace referencia en el cafeína LRU cola:

  • cola de Eden: cafeína especifica en sólo el 1% de la capacidad de la memoria intermedia, si el tamaño = 100, entonces el tamaño efectivo de la cola es igual a 1. Este registro es nuevo para los datos de la cola para evitar el tráfico de ráfaga, porque no hay frecuencia de acceso previo, como resultado de ser eliminado. Por ejemplo, hay un nuevo juego en la línea, después de los hechos, el principio hay frecuencia de acceso, impidiendo otra línea de caché se elimina, y unirse a la zona. Eden District, la más cómoda de la zona cómoda mayoría, cuando de otros datos es difícil de eliminar.

  • cola de la libertad condicional: cola de la llamada libertad condicional, en esta cohorte representa los datos es relativamente frío, será eliminado inmediatamente. El tamaño efectivo de tamaño menos eden menos protegida.

  • Protegido de cola: En esta cola, puede estar seguro de que un poco, usted no va a ser eliminado, pero no se preocupe, si no hay datos de la cola de libertad condicional o datos protegidos están llenas, también será eliminado de la situación embarazosa. Por supuesto, usted desea convertir en esta cola, es necesario para acceder a la Libertad condicional una vez, será promovido a la cola de Protección. El tamaño efectivo (tamaño de sustracción eden) X 80% si el tamaño = 100, sería 79.

 

La relación tres colas como sigue:

 

  1. Todos los nuevos datos entrarán Edén.
  2. Eden es completa, salir a la Libertad Condicional.
  3. Si usted visita uno de estos datos en Libertad Condicional, a continuación, estos datos se actualiza a Protegida.
  4. Si Protegida completa seguirá siendo degradado a la libertad condicional.

Para ocurre cuando la salida de datos, sería eliminado de la Libertad Condicional. Esto cola de la cabeza del equipo de datos llamado la víctima, esto es sin duda el primero en entrar en el primer equipo, de acuerdo con el algoritmo LRU cola de si, de hecho, él debe ser eliminada, pero aquí sólo se puede llamar a una víctima, esta cola se suspende la cola, en nombre de la ejecución de darle inmediatamente. Esto eliminará la cola llamada del candidato, también conocido como el atacante. Aquí la víctima y el atacante se decidirá en el PK Imperial que deben ser eliminados.

Primero se bloqueará si el bloqueo no Explicación alguien ya fijó la ejecución. Se utilizará el hilo por defecto ForkJoinPool piscina o de hilos preferidos de la piscina, drainBuffersTask aquí de cafeína es en realidad en PerformCleanupTask.

Cafeína en la rueda de tiempo como se indicó anteriormente. Cuando insertamos datos, calculados de acuerdo con el método que reescribir la expiración del tiempo que debería, él debe expirar 1536046571142 tal tiempo, el tiempo de expiración del tiempo de procesamiento es 1536046571100 42ms, se obtiene su resta, luego se coloca una ronda tiempo, ya que es menos de 1.07s, 1.07s directamente en una posición, y (se calcula que pasar por un cierto algoritmo) una posición de la segunda capa, el extremo de inserción de la lista mediante el método de interpolación.

Cuando se trata de la fecha de caducidad será calculada sobre la diferencia entre el tiempo de un acuerdo con la hora actual y el tiempo de procesamiento requerido todos los tiempos redonda dentro de su alcance todo el tiempo de procesamiento, si un hecho de nodo no ha expirado, necesitará el tiempo en volver a insertarse en la rueda.

3.5 Conócete a ti mismo - Monitor RBI

La cafeína está disponible en un número de carreras impulsadas en la supervisión de la política, Api ser abierto por recordStats (), el valor predeterminado es el uso de cafeína viene, también se puede implementar su propio. En define la interfaz StatsCounter los métodos requieren RBI en la actualidad tiene el siguiente:

  • recordHits: Registro de aciertos de caché
  • recordMisses: Registro fallos de caché
  • recordLoadSuccess: carga Record con éxito (consulte CacheLoader cargado correctamente)
  • recordLoadFailure: error al registro de carga
  • recordEviction: Registro de datos

A través de la escucha anterior, podemos almacenar en caché el estado actual de monitoreo en tiempo real para evaluar la salud de caché y caché tasa de éxito, para facilitar los parámetros de ajuste posteriores.

3.6 principio y el final - de escucha

Hay momentos en los que necesitamos saber La cafeína es la razón por la memoria caché que fue eliminado, por lo que algunos de optimización? Esta vez necesitamos un oyente, el código es el siguiente:

Cache<String, String> cache = Caffeine.newBuilder()
                .removalListener(((key, value, cause) -> {
                    System.out.println(cause);
                }))
                .build();
复制代码

Hay razones para ser eliminados en la cafeína en una gran variedad:

  • Explícito: Esta razón es que el usuario lo tanto causó ser eliminado mediante una llamada al método remove.
  • Sustituida: actualización, de hecho, lo que equivale al valor antiguo que desea borrar.
  • Cobrados: Para nuestro recolector de basura, que consiste en reducir nuestros anteriormente citados, referencias débiles suaves.
  • CADUCADA: Expirado eliminado.
  • TAMAÑO: Tamaño eliminado, si se supera el máximo será eliminado.

Cuando eliminamos va a devolver la llamada, podemos imprimir los datos de registro de monitoreo en tiempo real.


++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++

Practicar el uso de ejemplos:

estrategia de relleno (Población)

La cafeína proporciona a llenar tres estrategias: manual, sincrónicas y asincrónicas

interfaz de memoria caché permite la recuperación de la memoria caché explícita al control, actualización y supresión.

Vamos a conseguir a través valor del método de cache.getIfPresent (clave) de una clave por cache.put método (clave, valor) para mostrar la NC en la memoria caché, pero será también lenta para cubrir los datos clave originales. Así es más cache.get recomendada (clave, k -> valor) forma, obtener método será un parámetro clave de la función (createExpensiveGraph) como parámetro. Si la clave no existe en la memoria caché, a continuación, llamar a esta función de función, y como valor para la inserción de la caché del búfer. conseguir método se bloquea el camino de llamadas, incluso entonces múltiples hilos soliciten simultáneamente ese valor sólo se llama una vez método de la función. Esto evita que el concurso de escritura con otros hilos, que es la razón por la cual el uso de getIfPresent mejorar.

Nota: Si se llama a la NULL devuelve el método (como el anterior método createExpensiveGraph), El regreso de cache.get nulo, el método lanza una excepción si se llama, el método get lanzará una excepción.

Puede utilizar el método Cache.asMap () para obtener caché ConcurrentMap y luego hacer algunos cambios.
 

Encuentra getAll puede utilizar el método de lotes. Por defecto, getAll llamará a los valores de clave de caché método CacheLoader.load no son para construir el valor de la memoria caché. Podemos reescribir CacheLoader.loadAll getAll de las formas de mejorar la eficiencia.

AsyncLoadingCache se hereda de la clase LoadingCache, carga asíncrona utilizando Ejecutor para llamar al método y devolver una CompletableFuture. carga asincrónica la memoria caché utilizando el modelo de programación reactiva.

Si desea llamar de manera sincronizada, se debe proporcionar CacheLoader. Para expresar de forma asíncrona, se debe proporcionar un AsyncCacheLoader, y devuelve un CompletableFuture.

síncrona () Este método devuelve una vista LoadingCacheView, LoadingCacheView también hereda de LoadingCache. Este método es equivalente a llamar después de cargar una memoria caché asíncrona AsyncLoadingCache convierte en una carga LoadingCache caché síncrona.

Por defecto ForkJoinPool.commonPool () para realizar hilo asíncrono, pero se puede sustituir el grupo de subprocesos por el método Caffeine.executor (Ejecutor).
 

política de desalojo (desalojo)

La cafeína proporciona tres tipos de política de desalojo: Basado en el tamaño (tamaño-based), el tiempo (en base de tiempo) y en base a una referencia (a base de referencia)

Tamaño (tamaño-based) basado

Basándose en el tamaño de la expulsión, hay dos maneras: una se basa en el tamaño de la memoria caché, se basa en el peso.

Podemos utilizar el método Caffeine.maximumSize (largo) para especificar el tamaño máximo de la memoria caché. Cuando la caché supera esta capacidad, vamos a utilizar la política Ventana TinyLfu para eliminar la memoria caché.

También podemos usar la estrategia de pesos a la expulsión, se puede utilizar la función Caffeine.weigher (pesador) para especificar el peso, utilice la función Caffeine.maximumWeight (largo) para especificar un valor de peso máximo de caché.

maximumWeight y MaximumSize no se pueden utilizar simultáneamente.
 

Tiempo (Time-based) basada

La cafeína proporciona tres política de desalojo cronometrado:

expireAfterAccess (largo, TimeUnit): Después de una visita o escribiendo a la última hora de inicio, expiran después de un período de tiempo especificado. Si ha habido una solicitud para acceder a la clave, entonces la caché siempre no tienen vencimiento.
expireAfterWrite (largo, TimeUnit): Un temporizador comienza cuando el último caché de escritura, expiran después de un período de tiempo especificado.
expireAfter (caducidad): una directiva personalizada, el tiempo de expiración se calcula por la expiración lograr por sí solo.
 

Nota : Caffeine.weakValues () y Caffeine.softValues () no se pueden utilizar juntos. referencias débiles y blandos referencias no se pueden usar juntos

Publicados 386 artículos originales · ganado elogios 2 · Vistas 9832

Supongo que te gusta

Origin blog.csdn.net/kuaipao19950507/article/details/105338717
Recomendado
Clasificación