Вы должны обязательно хешировать ключ.Вы, возможно, скажете: «Почему я должен рисковать получать коллизии, когда я могу в любой момент объединить уникальный ключ?».Простой ответ: если вы генерируете ключи кеша с помощью конкатенации строк, вам всегда нужно вычислять с наихудшим случаем требований к пространству для оценки использования оперативной памяти.
Так что если у вас есть кеш с 200 записями .. и 2 полями20 символов максимальных струн.Худший случай будет 200*2*20*(size of character)
.Если вы загружаете полный кэш на каждом возможном параллельном соединении, это умножится на количество параллельных соединений.
С хэшами у вас всегда есть минимальное требование к оперативной памяти = максимальное требование к оперативной памяти для поля ключа.
Если у вас есть много значений, которые объединяются для ключей, это очень плохо масштабируется.
Редактировать:
Даже если вы используете его для запроса, массив потребляет память.Хотя это кеш, он присутствует от начала до конца запроса.Поэтому вам необходимо учитывать, что он занимает определенное количество места в вашей памяти, а при использовании хеша - фиксированное количество.
Во-вторых, необходимо сравнивать ключи.Если вы обращаетесь к ассоциативному массиву с помощью строкового ключа, ваш интерпретатор должен сравнить ключ с помощью charwise.Если у вас есть метод хеширования для генерации ключей, это также будет фиксированное количество шагов.
Если вы используете конкатенацию, количество шагов будет варьироваться между лучшим и худшим случаями.