Обьясните зачем конкретно нужны Redis и Memcached и можно ли их связать с технологиями как nodejs?
Кешировать можно все, что лежит на диске или в БД. Если бы Вы писали на чем-то вроде PHP, то был бы смысл в Memcached, просто поставив его между СУБД и приложением, кешируя результаты запросов можно значительно увеличить производительность. А вот использовать его с node.js я не вижу смысла, потому, что в ноде можно и так держать все в структурах данных в памяти приложения, ведь нодовские приложения "долгоиграющие", они не перезапускаются при каждом следующем GET/POST запросе и не освобождают память. Поэтому мы можем разместить в оперативной памяти кеш прямо внутри приложения и сэкономить на межпроцессовом взаимодействии (memcached это все же другой процесс). Но от межпроцессового взаимодействия все же нельзя полностью отказаться, если один процесс ноды не справляется, то нужно запускать несколько и приклеивать пользователей к процессам (ip sticky, cookie sticky), если же нужно будет организовать взаимодействие между двумя пользователями, приклеенными к разным процессам, то тут нам поможет Redis, ZMQ, RabbitMQ для передачи событий из процесса в процесс.
Redis это memcached на стероидах. Он пригоден не только для кеша, но и для хранения любых состояний приложения (сессий, индексы, и т.п). В Redis всё это сохраняется на диск.  После появления Redis`а, использовать memcached практически не имеет смысла.