Я хочу знать, полезно ли использовать ConcurrentHashMaps для пользовательских данных. У меня есть пользовательские данные, сохраненные в базе данных mysql, и я извлекаю их, когда пользователь входит в систему (или кто-то редактирует пользователя). Каждый раз, когда пользователь переходит на другую страницу, эти пользовательские данные будут обновляться. Должен ли я использовать карту и сохранять там изменения из моего приложения, имея базу данных в фоновом режиме, или я должен напрямую загрузить ее из базы данных. Я хочу сделать приложение максимально производительным.




Если производительность является приоритетом, я думаю, вы должны хранить зарегистрированных пользователей в памяти.
Таким образом, запросы на чтение будут быстрыми, поскольку вам не нужно будет запрашивать базу данных. Однако вам нужно будет обновить карту, если какой-либо из зарегистрированных пользователей будет каким-либо образом отредактирован.
То, что вы описываете, это тайник. Предположим, что обращения к базе данных обходятся дорого, потому что нужно загрузить много информации, или запрос, который используется для извлечения данных, сложен и требует много времени. Здесь вступает в игру структура данных кэша. По сути, это хранилище в памяти, которое действительно быстрее выполняет запросы к базе данных, потому что на самом деле оно уже загружено в память.
Процесс заполнения кеша занимает столько же времени, сколько и запрос данных к БД (обычно больше, но в том же порядке). Так что кэши имеет смысл использовать только в том случае, если это приносит пользу во времени. Однако существует компромисс: скорость против свежесть данных. В зависимости от вашего варианта использования вы должны найти правильный компромисс между этими двумя, а потом вы узнаете, действительно ли это удобно.
Как вы это описываете, то есть пользовательские обновления, которые необходимо сохранять и отображать, использование кеша кажется немного излишним IMO, если только у вас нет большого количества зарегистрированных пользователей, и многие из них используют систему одновременно. Если вы решите использовать его, имейте в виду некоторые проблемы параллелизма, которые могут возникнуть. Параллельные хеш-карты спасают вас от многих опасностей, но с компромиссом производительности.
Человек не может отличить задержку в 1 мс от задержки в 50 мс. Таким образом, оптимизация сверх «достаточно хорошего» излишняя.
MySQL уже использует кэширование; добавление другого кеша может фактически замедлить время отклика.