2011-08-31 9 views
39

Me acaban de venir a través de la MemoryCache que es nuevo en .NET 4.¿Cuáles son las razones de peso para usar un MemoryCache sobre una llanura de edad Dictionary <string, object>

consigo que puede ser útil si quieren:

  • Limitar el uso de la memoria total de la caché
  • tienen un tiempo de caducidad objeto (tiempo de vida) para los objetos que ponen en la caché

¿hay alguna ot sus razones apremiantes para usar un MemoryCache sobre un estándar Dictionary<string,object>

Tengo algunos libros en C# y .NET y no hay referencias en ningún lugar.

+0

Estoy confundido. ¿Cómo persistiría un 'Diccionario ' en la memoria? –

+0

@ColinPear static –

Respuesta

33

creo clavasteis las dos razones de peso :-)

El MemoryCache tiene una estrategia de desalojo, de modo que pueda tirar entradas que ya no son necesarios o para que usted no tiene suficiente memoria más.

Un diccionario no "perderá contenido".

Actualización: MemoryCache es seguro para subprocesos y tiene métodos como AddOrGetExisting. Con un diccionario, tendría que sincronizar el acceso usted mismo (o usar ConcurrentDictionary).

+0

Sí, esta idea de desalojo parece interesante: lo veo estableciendo [CacheItemPolicy] (http://msdn.microsoft.com/en-us/library/system.runtime.caching.cacheitempolicy.aspx) en una elemento puede agregar una Excepción de desplazamiento (desahuciado si no se ha accedido en un lapso de tiempo determinado) o también podría agregar algunas otras condiciones personalizadas, como un archivo en el disco que se está modificando. –

+0

La única característica que extraño en MemoryCache es guardar/cargar desde el archivo. – Tomas

+3

'ConcurrentDictionary' también es seguro para hilos .. :) – TryingToImprove

Cuestiones relacionadas