¿Escenarios prácticos de aplicación de Redis?
1. Mostrar la lista de proyectos más recientes
La siguiente declaración se usa a menudo para mostrar los proyectos más recientes. A medida que aumentan los datos, la consulta sin duda se volverá más lenta y. Más lento.
SELECCIONE DE foOO DONDE ORDEN POR tiempo DESC LIMIT 10
Las consultas como "enumerar las últimas respuestas" son muy comunes en las aplicaciones web y a menudo conducen a problemas de escalabilidad. Esto es frustrante porque los elementos se crean en este orden, pero para generar este orden debe realizar una operación de clasificación. Redis puede resolver problemas similares. Por ejemplo, una de nuestras aplicaciones web quiere enumerar los últimos 20 comentarios publicados por los usuarios. Junto a los últimos comentarios, tenemos un enlace "Mostrar todo" en el que se puede hacer clic para obtener más comentarios. Suponemos que cada reseña en la base de datos tiene un campo de ID delta único. Podemos usar la paginación en la página de inicio y en las páginas de comentarios, y usar una plantilla de Redis para agregar su ID a la lista de Redis cada vez que se publica un nuevo comentario:
LPUSH last.comments lt;IDgt;
p>Recortamos la lista a la longitud especificada, por lo que Redis solo necesita guardar los últimos 5000 comentarios:
LTRIM last.comments 0 5000
Cada vez que necesitamos para obtener el rango de elementos de los últimos comentarios, llamamos a una función para hacerlo (usando pseudocódigo):
FUNCIÓN get_latest_comments(start, num _items):
id list = redis. lrange( "últimos.comentarios", inicio, inicio num elementos -1) IF id list.lengthlt; num elementos
id list = SQL DB("SELECCIONAR... ORDEN POR LÍMITE de tiempo ..." ) END
RETURN id list END
Lo que estamos haciendo aquí es simple. En Redis, utilizamos una caché residente para almacenar la ID más reciente, que siempre está actualizada. Pero tenemos un límite de 5000 ID, por lo que nuestra función de obtención de ID realizará solicitudes constantemente a Redis, y solo necesitamos acceder a la base de datos cuando los parámetros de inicio/recuento estén fuera de rango.
Nuestro sistema no "vacía" el caché como de forma tradicional, la información en la instancia de Redis siempre permanece igual, mientras que la base de datos SQL (o cualquier otro tipo de base de datos en el disco duro) solo lo obtiene cuando el usuario lo necesita. Solo se activará para datos "distantes". La base de datos SQL (o cualquier otro tipo de base de datos en el disco duro) solo se activará cuando el usuario necesite obtener los datos "lejos", la página de inicio o la primera página de comentarios no molestarán a la base de datos en el disco duro.