Кэш в памяти 200 000 пользовательских данных на другом компьютере

У нас есть много приложений, обращающихся к одной базе данных. Чтобы уменьшить количество обращений к базе данных, мы планируем кэшировать 200 000 пользователей и их соответствующие данные в кеше в памяти, таком как Redis, memcached и т. д.

Кэш будет размещен на другом компьютере, и каждый сервер приложений будет обращаться к кешу по сетевому вызову.

Может ли кто-нибудь подтвердить, что мы придерживаемся правильного подхода, или предложить лучший?


person user2537119    schedule 20.01.2014    source источник
comment
Находятся ли серверы приложений на той же физической машине, что и единая база данных?   -  person Agis    schedule 20.01.2014
comment
База данных и сервер приложений находятся на разных машинах. мы используем сервер Windows 7 для приложений и сервер MSsql для базы данных. Мы рассматриваем вариант Redis или Memcached. скорее всего, мы будем использовать memcached, поскольку Redis не готов к работе в Windows.   -  person user2537119    schedule 21.01.2014


Ответы (1)


Зависит от вашего сценария. Допустим, у вас есть 200 000 пользователей с информацией о каждом пользователе (номер, адрес, имя и т. д.), которые необходимо сохранить.

Сценарий 1
Серверу приложений нужны все данные, связанные с пользователем, для большинства обращений к хранилищу данных.

Сценарий 2
Серверу приложений нужны некоторые данные, связанные с пользователем (иногда только возраст, иногда только доб. рождения), для большинства обращений к хранилищу данных.

Для сценария №1 хорошо работает Memcache. Для сценария № 2 Redis работает очень хорошо.

Конечно, есть много сотен других соображений.

person Manu Manjunath    schedule 22.01.2014
comment
Мы будем использовать кэш в памяти для обоих типов сценариев. На самом деле мы установим кеш-сервер (мы решили с Redis) как отдельное приложение, и каждый сервер приложений (которых в настоящее время 7, число будет увеличиваться со временем) будет получать доступ к данным из Redis. - person user2537119; 23.01.2014
comment
Теперь главный вопрос, с которым я столкнулся, как мне использовать Redis как автономный. Прямо сейчас я могу придумать несколько вариантов, не уверен, насколько они эффективны, просто несколько случайных мыслей. 1) ядро ​​Java с Redis. но мы будем обращаться к серверу Mssql для заполнения кеша и использовать планирование для сохранения данных обратно в базу данных, поэтому для этого потребуется спящий режим. учитывая, что этот второй вариант кажется лучше 2) Верблюд Apache с Redis на сервере приложений Jboss. здесь я должен использовать любой фреймворк j2ee, чтобы облегчить свою работу, то есть Spring или javaee6. Я все еще гуглю возможные варианты. Пожалуйста, предложите лучший подход к этому - person user2537119; 23.01.2014
comment
Учитывая, что Redis может сохранять данные на диск, его можно использовать автономно. Что касается различных драйверов для подключения с Java к Redis, пожалуйста, найдите/задайте другой вопрос. Если приведенный выше ответ помог вам, примите или проголосуйте, или и то, и другое. - person Manu Manjunath; 23.01.2014