Google Code disponible en: English - Español - 日本語 - 한국어 - Português - Pусский - 中文(简体) - 中文(繁體)
Las aplicaciones web escalables de alto rendimiento utilizan a menudo una caché distribuida de datos integrados en memoria delante o en lugar de un sistema de almacenamiento complejo permanente para algunas tareas. Para ello, App Engine incluye un servicio de memoria caché.
El API Java de Memcache implementa la interfaz JCache (javax.cache), un estándar borrador descrito en JSR 107. JCache proporciona una interfaz en forma de asignación para recopilar datos. Puedes almacenar y recuperar valores de la memoria caché mediante las claves. Las claves y los valores pueden ser de cualquier clase o tipo serializable.
import java.util.Collections;
import javax.cache.Cache;
import javax.cache.CacheException;
import javax.cache.CacheManager;
// ...
Cache cache;
try {
cache = CacheManager.getInstance().getCacheFactory().createCache(Collections.emptyMap());
} catch (CacheException e) {
// ...
}
String key; // ...
byte[] value; // ...
// Put the value into the cache.
cache.put(key, value);
// Get the value from the cache.
value = (byte[]) cache.get(key);
Un uso de la memoria caché consiste en acelerar las consultas comunes del almacén de datos. Si varias solicitudes realizan la misma consulta con los mismos parámetros y no es necesario que los cambios de los resultados aparezcan en el sitio web inmediatamente, la aplicación puede almacenar los resultados en la caché del servicio Memcache. Las solicitudes sucesivas pueden comprobar Memcache y realizar sólo la consulta del almacén de datos si los resultados no existen o han caducado. Los datos de sesión, las preferencias del usuario y cualquier otra consulta que se realice en la mayoría de las páginas de un sitio son buenos candidatos para almacenar en caché.
Memcache puede resultar útil para otros valores temporales. No obstante, cuando estés pensando si almacenar un valor únicamente en Memcache y no has considerado otro almacenamiento permanente, asegúrate de que tu aplicación funciona de forma aceptable cuando el valor no esté disponible de repente. Los valores pueden caducar en Memcache en cualquier momento y pueden caducar antes del plazo de vencimiento establecido para el valor. Por ejemplo, si la repentina ausencia de los datos de sesión de un usuario causan fallos en el funcionamiento de la sesión, los datos deberían almacenarse probablemente en el almacén de datos además de en la Memcache.
De forma predeterminada, los valores almacenados en Memcache se conservan el mayor tiempo posible. Los valores se pueden expulsar de la caché cuando se añade a ésta un valor nuevo y la caché tiene la memoria baja. Cuando los valores se expulsan por presión de la memoria, los valores que menos se han utilizado recientemente son los primeros que se expulsan.
La aplicación puede proporcionar una hora de vencimiento cuando se almacena un valor, como un número de segundos relacionado con el momento en que se ha añadido el valor o como una hora Epoch Unix absoluta en el futuro (un número de segundos desde la medianoche del 1 de enero de 1970). El valor no se expulsará con posterioridad a este momento, aunque se pueda expulsar por otras razones.
En circunstancias poco frecuentes, los valores también pueden desaparecer de la caché antes del vencimiento por razones distintas a la presión de la memoria. Cuando Memcache es resistente a los fallos del servidor, los valores de Memcache no se guardan en disco, de modo que un fallo del servicio puede dar lugar a que los valores no estén disponibles.
En general, una aplicación no debería esperar que un valor almacenado en caché esté siempre disponible.
Cada llamada a Memcache se contabiliza en la cuota de llamadas al API de Memcache.
Los datos que la aplicación envía a Memcache se contabilizan en la cuota de datos enviados al API de Memcache. Los datos recibidos de la Memcache se contabilizan en la cuota de Datos recibidos del API de Memcache.
Para obtener más información sobre cuotas, consulta la sección Cuotas y la sección "Detalles de cuota" de la consola de administración.
Además de las cuotas, se aplican los siguientes límites al uso del servicio de correo:
| Límite | Valor |
|---|---|
| tamaño máximo de un valor almacenado en caché | 1 megabyte |