Cinco minutos para aprender programación: cómo aprender los ingenieros de back-end se conoce la caché será?

Declaración original

Este artículo fue publicado por primera vez en el número de micro-canales pública [programadores] Huang oblicua

Autor: Huang oblicua

Reimpresión favor indique la fuente y el autor al comienzo del artículo.

En este artículo se Cartografía de la mente

¿Qué es la memoria caché

caché del ordenador

Hacer el desarrollo de servicios de fondo de los estudiantes, presumiblemente caché no están familiarizados con, por lo general podemos utilizar Redis, Memcache este tipo de componente de caché, o una memoria caché local, para lograr algunas aplicaciones de back-end.

Por lo tanto, en sentido estricto, al final lo que se almacena en caché, vamos a ver la definición Enciclopedia de Baidu.

Caché (caché), el sentido original para referirse a la velocidad de acceso general más rápido que una memoria de acceso aleatorio (RAM) una memoria de alta velocidad, no se utiliza generalmente como el sistema principal tecnología DRAM de memoria, el uso de caros, pero SRAM rápido tecnología. configuración de la caché es un factor importante en todos los sistemas informáticos de alto rendimiento modernos para jugar.

En primer lugar, el término "caché" se utiliza para referirse a la caché de hardware del equipo, ya que la CPU y la memoria de computación brecha de velocidad es demasiado grande, si la CPU y la memoria interactúan directamente, entonces desperdicia una gran cantidad de tiempo de la CPU de computación, por lo que con caché de velocidad es muy lejos de los dos componentes hacen intermediario.

trabajos específicos, tiempo de CPU para tomar caché de datos para encontrar a alguien, a causa de la diferencia de velocidad entre los dos no es muy grande, por lo que la CPU no hace perder demasiado rendimiento, si los datos están en la memoria caché, y luego directamente tomar caché, de lo contrario la memoria para ir a buscar, sino también para mantenerse en la memoria caché después toma completa con el fin de llegar a la próxima vez y después no tenga que utilizar la memoria de la CPU.

De hecho, la memoria caché también se puede dividir en una memoria caché, la memoria caché L2 y caché de tres niveles y así sucesivamente, hasta llegar a todos los niveles, más lenta es la velocidad, menor será el precio, después de todo, el costo es un factor que debemos considerar, a de lo contrario, todo en la parte superior con todo el hardware, no hay necesidad de discutir la optimización del software.

Además de caché, también hay una caché de disco duro, la memoria caché del propio sistema operativo de red para lograr la caché, el propósito es construir un puente entre los dos componentes, la velocidad de operación diferente, y la caché de datos son a menudo los datos locales, también conocido como datos calientes, esta parte de los datos se utiliza a menudo, y por lo tanto más valor que se almacena en caché

caché de desarrollo de software

Lo anterior hablamos un poco acerca de las computadoras que ya están en la memoria caché, entonces por lo general caché utilizado en el desarrollo de código es lo que es? No parece la misma ah.

Creo que hemos oído Redis, que es uno de los más populares componente de caché de la industria, echar un vistazo a cómo se define.

Redis es un sistema de almacenamiento de claves-valor. Y Memcached Del mismo modo, soporta relativamente más almacena tipo de valor, que comprende una cadena (string), la lista (lista), SET (fijar), zConfigurar (conjunto ordenado - conjunto ordenado) y el hash (tipo de hash). Estos tipos de datos son compatibles con push / pop, añadir / quitar y en la intersección y unión, y la diferencia más rico operación, y estas operaciones son atómicos.

Sobre esta base, Redis apoyan una variedad de diferentes formas de clasificación. Al igual que con memcached, con el fin de garantizar la eficiencia, los datos se almacenan en caché en la memoria. Redis diferencia se actualiza periódicamente en los datos escritos en el disco o para modificar la operación de escribir archivo de registro adicional, y sobre esta base se dan cuenta el maestro-esclavo (maestro y esclavo) de sincronización.

De acuerdo con la descripción anterior, podemos ver, la Redis es un K / V del sistema de almacenamiento, y es que los datos en caché en la memoria, todos sabemos, la memoria del disco duro es mucho más rápido que la velocidad, y por lo general siempre base de datos de uso, en esencia, se basa en el disco duro IO que trabajar duro para ir a través de cada base de datos para leer y escribir operaciones de IO.

Por lo tanto, requiere mucho tiempo para leer y escribir en la memoria de base de datos es mucho más lento que la lectura, nos limitamos a decir, lee la CPU y la memoria caché y la diferencia de velocidad de escritura es también grande, por lo que aquí caché Redis y jugó el mismo papel, sólo se Sin embargo, un hardware, un software, una conexión de la memoria y de la CPU, el otro es el disco conectado y la memoria.

Además de los Redis, hay muchos componentes como la memoria caché Memcache se basa también en esta forma de lograr, mediante la base de datos de caché de datos en caliente para mejorar las aplicaciones del tipo de acceso, que es una técnica muy común en el desarrollo de aplicaciones de servicios de fondo.

Cómo aprender la tecnología de almacenamiento en caché

Como ingeniero de desarrollo de servicios de fondo, no entiendo la caché no funciona, incluso si lo hace todos los días es un mantenimiento, al menos para utilizar la caché local él.

Además, la entrevista será a menudo aspectos problemáticos de la caché, un simple punto, podría dejar que se habla de los principios y la aplicación Redis, más complejo básicos, y se combina con la escena, le hará algunas preguntas pueden surgir caché, y o la forma en la escena del diseño de caché distribuida.

Desde el mismo principio se puede utilizar para comprender, aprender el uso avanzado, el aprendizaje de almacenamiento en caché y otras técnicas para aprender, necesita los problemas más fáciles primero, vamos a echar un vistazo a cómo conseguir la caché de esta duros pequeños duendes.

CHM caché local

El primer contacto con la caché, de hecho, cuando supe de HashMap, Hashmap sí es un objeto clave de KV, y que acaba de decir parece un poco como Redis, entonces, cómo hacer HashMap convertido realmente en una memoria caché de ella, de hecho, difícil.

De hecho, muchos de la memoria caché local es ConcurrentHashMap directamente a lograr, la atención, aquí está el apoyo ConcurrentHashMap concurrente, esto porque ah, los objetos en caché puede soportar múltiples hilos simultáneamente accesibles, si al mismo tiempo poner una situación buena, es puede haber una excepción, por lo que el uso ConcurrentHashMap puede evitar este problema.

Para mayor comodidad, se hace referencia más adelante a CHM ConcurrentHashMap. CHM no sólo asegurar su acceso es seguro para subprocesos, y así sucesivamente que el uso directo de la palabra clave sincronizada para ser más eficiente y flexible.

Por lo tanto, lo CHM aplicar el principio almacenamiento en caché es? En primer lugar, en la aplicación, la esencia es para almacenar en caché a menudo existen algunos datos en la memoria, y la memoria se puede dividir en memoria de almacenamiento dinámico Java y memoria de pila, es objeto de caché de forma natural a ser colocado en una memoria de almacenamiento dinámico.

Así que es un miembro de una clase de variables, como el presente.

private Map<String, CacheObj> CACHE_OBJECT_MAP = new ConcurrentHashMap<>();

Pero este uso de la caché tiene un problema que pertenece a la instancia variable miembro, si la instancia no se ha inicializado o se recupera, entonces el objeto de caché también desaparece con él, desde luego, no es, después de todo, el ciclo de vida de la caché debe ser tan larga como la propia aplicación Además, este objeto de caché también se puede modificar, por ejemplo, puedo operar fácilmente en el código un poco, dejar que = null, o re-inicializarlo, ya que no está permitido.

Por lo tanto, la norma CHM caché local debe ser como para ser inicializado.

private static final Map<String, CacheObj> CACHE_OBJECT_MAP = new ConcurrentHashMap<>();

Las variables estáticas para asegurar que ha estado presente en la memoria de pila, pero no son las modificaciones finales de palabras clave pueden ser re-inicializado o punteros a otros objetos.

El siguiente paso es simple, siempre y cuando utilice los métodos get y poner en ella. Por supuesto, esto es sólo la aplicación caché local más básico también puede ser implementado como caché LRU, participar en una variedad de operaciones de Sao, donde ya no se discuten específicamente, hay muchos demostración en línea, libre de ir a la referencia.

caché común de combate componente

Además de la memoria caché local, también hay que llegar a conocer algunas de las técnicas de almacenamiento en caché de uso común, tales como Redis, Memcache tipo de componente de caché, hay un tipo similar de almacenamiento en caché marco Ecache Java.

Este tipo de tecnología de almacenamiento en caché sofisticada, más que podemos aprender y usar, generalmente son capaces de proporcionar soluciones avanzadas en diversos escenarios, tales como la forma de hacer frente a los datos caliente, cómo implementar un sistema distribuido, alta disponibilidad, la forma en la sincronización de datos, maestro-esclavo copiar, y la realización de la aplicación de cada bloqueo distribuido escena, ID generación distribuida y similares.

Hay una cara preguntas que creo que nos hemos encontrado, y que es la diferencia le preguntas Memcache y Redis, que podría adoptar esta cara preguntas para descubrir, al final ellos son qué características.

Redis sólo es compatible con los tipos simples k / v de datos, y también es compatible con la lista de almacenamiento, juego, zConfigurar (conjunto ordenado), estructuras de datos de hash, etc., de manera que tiene un escenario de aplicación más amplia.

El tipo de datos sólo está soportado Memcached es una cadena de cadena, es ideal para la caché de datos de sólo lectura, ya que la cadena no requiere tratamiento adicional.

Redis mayor punto brillante es la persistencia de datos de soporte, que en tiempo de ejecución puede realizar copias de seguridad de los datos en el disco, o el reinicio después de un fallo de alimentación, los datos almacenados en caché se puede cargar en la memoria de nuevo, mientras la configuración de Redis razonable, básicamente sin perder datos .

Esto es terrible, si no Memcache datos persistentes, en caso de un corte de energía en el agrietado.

Memcache en escenarios de concurrencia, cas puede garantizar la coherencia, y soporte de transacciones Redis es relativamente débil, sólo para asegurar que cada ejecución sucesiva de operaciones en la transacción.

Aunque los servicios de apoyo Redis y Memcache no es compatible, pero no menos de Redis a Memcache no son compatibles.

Rendimiento, Redis en las operaciones de lectura y escritura son un poco por delante de Memcached. Memcached gestión de memoria Redis no es tan complicado, los metadatos de metadatos más pequeño, en términos relativos, muy poca sobrecarga.

Para los datos del sistema, incluso si no hay datos de copia de seguridad no importará, pero si hay que leer y escribir, entonces, evidentemente, no es apropiado Memcache, en su conjunto, Redis, o ligeramente mejor.

Redis componente caché es en realidad desplegado este tipo de servicios a través del modo C / S, mientras que los otros componentes de caché Ecache, está directamente integrado, los datos almacenados en caché en la JVM, algo similar a nuestra memoria caché local, de hecho, también sea aplicada Ecache en la hibernación, por lo que muchas veces están en caché utilizado sin saberlo, han sido.

Por supuesto, Ecache dichos datos en caché en la JVM, que desea compartirlo, a continuación, más problemas, sobre todo cuando se requieran en un escenarios de aplicaciones distribuidas, es más complicado de implementar.

El almacenamiento en caché principio

Creo que cuando se lee la parte de la memoria caché local, el caché se sentirá nada más difícil de implementar, ah, un encuentro HashMap.

De hecho, el problema de las implementaciones de memoria caché todavía mucho que considerar, por lo que tomaron Redis, utilizando lo que la estructura de datos para almacenar datos es un tema muy importante, ciertamente esperamos para utilizar como pequeño espacio para almacenar la mayor cantidad de datos, sino también mejorar la eficiencia de la ABM caché.

Redis soportar una variedad de estructuras de datos, tales como cadenas, matrices, diccionarios (mapa), así como una lista, conjunto, conjunto ordenado, etc., no se ven en la estructura de datos es muy simple, pero los autores tienen que poner en práctica un esfuerzo tremendo.

A menudo un múltiplo estructura subyacente para lograr el propósito es el espacio de compresión, la mejora de la eficiencia. Amigos interesados ​​pueden mirar en la parte inferior de este artículo ReDiS estructuras de datos para lograr https://blog.csdn.net/Future_LL/article/details/88525004

Además de la estructura de datos, para lograr la misma Redis también es interesante, por ejemplo, el servicio y el cliente Redis cómo el diseño, además, Redis es el trabajo de una sola rosca, ¿por qué este tipo de diseño, operación existe Redis es cómo lograr estos contenidos valen once a conocer.

También hay algunos contenidos avanzados, tales como escenarios de despliegue Redis, a menudo incluyendo maestro-esclavo solución de clúster desplegado, programas de HA, etc., también tienen solución oficial Redis Redis-cluster de alta disponibilidad del clúster. Redis también se utiliza con frecuencia para el bloqueo distribuido, generador de Identificación distribuida, pero detrás de estas tecnologías, de hecho, tiene mucho que podemos cavar profundo punto.

El tiempo, nos detendremos aquí hoy, Redis para almacenar en caché y aprender de este artículo para empezar.

Blog

La tecnología Java almacén "Guía del programador de Java crítica"

https://github.com/h2pl/Java-Tutorial

Java integrado de toda la red de alta calidad de los contenidos de aprendizaje de ayuda que, desde básico a avanzado revisión sistemática de Java

Guía de entrevistar

Toda la red más caliente Entrevista Java Guías, un total de más de 200 páginas, muy práctico, ya sea para su revisión o preparación de entrevistas son buenas. La tecnología Java en ríos y lagos públicos [N] Respuesta "PDF" para recibir un libre.

Escrito en los últimos

Si cree que este artículo útil para usted, usted no significa que su "buen" Ja, círculo de amigos hacia adelante es mi mayor apoyo que, su apoyo es mi mayor estímulo.

Todas las sugerencias y comentarios sobre esta serie de artículos, comentarios también son bienvenidos a decirme, esperamos sus comentarios.

-----------------------

Público número: Programador Huang oblicua (ID: AntCoder )

Blog: www.how2playlife.com

Conocer casi: Huang programadores de rampa

La estación B: rampa Huang (la búsqueda de atención)

Tenemos el compromiso de hacer más fácil para que más personas al programa de auto-estudio , Dale a un hombre un pez, sino también dando a la pesca

Enfoque en número público de micro-canales [programadores] Huang respuesta oblicua "2019" para recibir los materiales de aprendizaje de terminar mis dos años

Cubiertas de auto-programación, entrevistas de trabajo, la tecnología Java, algoritmos, problemas de pincel, como sección básica del ordenador y el estudio de recopilación de datos 8000G.

Publicados 293 artículos originales · ganado elogios 1597 · Vistas 1,23 millones +

Supongo que te gusta

Origin blog.csdn.net/a724888/article/details/104832428
Recomendado
Clasificación