2011-08-22 14 views
6

En mi proyecto actual, estoy usando Memcache para almacenar pares clave-valor, pero ya que la comunicación pasa a través del socket entre mi proceso y el Memcache haciendo que las enormes latencias. Fuimos con Memcache porque teníamos el requisito de almacenar una gran cantidad de pares clave-valor. Pero ahora quiero almacenar el diccionario como una estructura de datos global en mi proceso. ¿Es una cosa buena? Porque el diccionario se almacenará en el espacio de direcciones de los procesos. Sugerencias por favor ....Diferencia entre Memcache y Python diccionario

Respuesta

8

La razón habitual para usar memcached es que le gustaría distribuir la caché entre varios equipos, con el objetivo de ambos datos que tienen disponible en todas las máquinas, mientras que también la utilización de la almacenamiento de todas las máquinas. Si esos requisitos no se aplican a usted, y solo necesita los datos en caché en una sola máquina, entonces memcached no le ofrece tanto. En ese caso, mover el diccionario a su proceso local podría ser una buena idea.

1

Si sus datos no son tan grandes, puede simplemente volcar su diccionario python en archivos con cPickle.dump o marshal.dump y, volver a cargarlos desde el archivo con cPickle.load o marshal.load, y si necesita preocuparse sobre el espacio de disco, puede usar bz2 o gzip comprimir/descomprimir durante la lectura/reescritura del archivo.

6

escribí a thorough answer a esto en el memcached "sobre" la página. Dibujé fotos y todo.

En resumen: Si tiene más de un proceso, el diccionario no le ayudará. Si tienes más de un proceso/computadora, vas a estar quemando toneladas de memoria que podrían reutilizarse de una manera excelente que te ahorrará mucho dinero y te permitirá obtener cosas más grandes.

Cuestiones relacionadas