Recientemente usé memcached y enfrenté una pregunta. Por qué no podemos simplemente usar un diccionario del idioma en lugar de Memcached (por ejemplo, Set() o Map() en javascript). Porque, de hecho, Memcached es solo un diccionario de datos temporales. Me parece que violamos el principio de responsabilidad única, pero no entiendo cómo formar una respuesta completamente correcta.
El uso de memcached o una construcción de lenguaje depende de lo que intente resolver y el contexto de su aplicación.
Si puede compartir la memoria utilizando una construcción de lenguaje (como Set o Map) en toda la aplicación y la cantidad de datos para almacenar en caché se ajusta bien a los límites de un solo proceso, es difícil justificar el costo de hacer una llamada de red para obtener caché. datos + la sobrecarga de mantener un servidor Memcache.
Por otro lado, si no puede compartir la memoria en toda su aplicación (por ejemplo, imagine muchos servidores/procesos aislados), o si la cantidad de datos para almacenar en caché es mayor de lo que le gustaría en un proceso, entonces use un servidor de caché (como memcached) tiene más sentido.
Estos no son mutuamente excluyentes, las aplicaciones pueden aprovechar ambos (servidor de caché + en memoria) para lograr un caché de varios niveles. Consulte esta publicación sobre cómo lo hace Stack Overflow.
El único caso en el que puedo ver el caché local de una aplicación violando el SRP es si almacena datos no relacionados con la aplicación y los pone a disposición de otros.